Newsgroup: it.discussioni.commercialisti
Titolo: Ot per gli esperti di macro excel

quando realizzate le macro  usate il registratore o fate tutto a mano? :-)
-- 
ciao
ku68
irc://
irc.freenode.net/openoffice.org-it
OpenOffice.org: usalo, copialo e regalalo, è legale! 
http://it.openoffice.org/

 quando realizzate le macro  usate il registratore o fate tutto a mano? :-)
Di solito tutto a "mano".
Ma il registratore aiuta molto quando non ricordi più qualche proprietà o
azione.
Si fa prima a registrare l'operazione che ti interessa che andare a cercare
nell'infinito :-) .... poi taglio la parte che mi interessa e la inserisco
nella procedura che mi interessa.
Ciao
Ermanno

 nella procedura che mi interessa.
non è che mi puoi spedire due macro semplici semplici  di cui  una fatta 
a mano e l'altra registrata? L'indirizzo è valido basta togliere 
l'antispam :-)


> quando realizzate le macro usate il registratore o fate tutto a mano? :-)
90% a mano.
10% registrando (a volte per capire come ragiona VB)
Altrimenti escono fuori eventi disarticolati...
Ciao
Giovanni (Prato)
P.S.: all'inizio registravo molte macro isolate per ambientarmi...
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Ti faccio un esempio.
Immagina che tu abbia diversi fogli strutturati nel medesimo modo e che
abbiano tutti nella stessa posizione delle celle con sfondo azzurro ma che
siano bloccate e siano nascoste.
Vuoi che in tutti i fogli le celle con sfondo azzurro risultino non bloccate
e non nascoste.
Registri la macro sul primo foglio compiendo tutte le operazioni che
dovresti fare in tutti gli altri fogli.
I passaggi saranno quelli di selezionare con la selezione multipla le celle
a cui dare la particolare formattazione.
Successivamente andare nel menù formato -> Celle -> Protezione e togliere la
spunta a Bloccata e Nascosta.
Una volta terminata la macro la utilizzerai in tutti i fogli.
Il risultato della macro registrata sarà la seguente:
Sub Macro1()
'
' Macro1 Macro
' Macro registrata il 03/03/2004 da Manuali Ermanno
'
'
Range("A1,C1,E1,A3,C3,E3,A5,C5,E5,A7,C7,E7,A9,C9,E9,A11,C11,E11,A13,C13,E13"
). _
        Select
    Selection.Locked = False
    Selection.FormulaHidden = False
End Sub
Questa macro imposta le celle A1, C1, E1, ecc. ecc. senza blocco e non
nascosta.
Ma lo fa sempre e solo per quelle celle.
La macro per fare la stessa cosa e che ho creato a mano è la seguente:
Sub SbloccaCella34()
  Dim c As Range
    For Each c In ActiveSheet.UsedRange
      If c.Interior.ColorIndex = 34 Then
        c.Select
        Selection.Locked = False
        Selection.FormulaHidden = False
      End If
    Next c
End Sub
Mi dirai che in questo caso quella registrata è più "esigua" (ci sono solo
tre righe di comando).
È vero. Però è anche una macro rigida.
Se un domani ti trovassi di fronte ad un foglio dove le celle con sfondo
azzurro non solo le medesime presenti nella macro non otterresti il
risultato sperato.
Allora ti tocca prender mano alla "mano" :-) e crearti una macro che faccia
la stessa cosa solo che sia "universale".
Infatti la macro nell'ambito delle celle utilizzate verifica quelle con
sfondo azzurro (Interior.ColorIndex = 34) le seleziona e le formatta
sbloccate (Locked = False) e visibili o non nascoste (FormulaHidden =
False).
Io ho usato il registratore per colorare una cella perchè non ricordavo
quale fosse l'indice numerico dell'azzurro (il 34).
Comunque con il registratore di macro spesso Excel aggiunge tutta una serie
di comandi che il più delle volte possono essere "riassunti" in un minor
numero di righe.
Ad es. nella prima macro ha prima selezionato le celle con
Range("A1,C1,E1,A3,C3,E3,A5,C5,E5,A7,C7,E7,A9,C9,E9,A11,C11,E11,A13,C13,E13"
).Select
e poi ha formattato la selezione con:
Selection.Locked = False
Selection.FormulaHidden = False
Si sarebbe pouto più "semplicemente" scrivere:
Sub Macro1()
'
' Macro1 Macro
' Macro MODIFICATA il 03/03/2004 da Manuali Ermanno
'
'
    WITH
Range("A1,C1,E1,A3,C3,E3,A5,C5,E5,A7,C7,E7,A9,C9,E9,A11,C11,E11,A13,C13,E13"
)
        .Locked = False
        .FormulaHidden = False
    END WITH
End Sub
In questa macro evito un passaggio e cioè quello della selezione delle
celle. Le celle vengono modificate direttamente senza essere selezionate.
Anche in quella che ho predisposto io potrei evitare la selezione delle
singole celle.
Ma c'è un motivo per cui ho lasciato la selezione. Perchè nell'ipotesi di
più celle unite (visivamente) in un'unica  cella la procedura da errore se
non vi è la selezione.
Altrimenti avrei dovuto utilizzare altri comandi che però quando ho creato
la macro non ricordavo a memoria nell'immediato e mi sarei costretto ad uno
sforzo per ricordarle. Inoltre non avevo voglia di registrare :-)))
Ciao
Ermanno