Visualizzazione post con etichetta Excel. Mostra tutti i post
Visualizzazione post con etichetta Excel. Mostra tutti i post

venerdì 28 gennaio 2011

VBA - Excel "Navigare fra i fogli di calcolo"

Ecco quali comandi usare per navigare fra i fogli di calcolo in excel usando VBA

A) Muoversi in uno sheet specifico:

Sheets("nome del foglio di calcolo").Select

'seleziona il foglio di calcolo in base al nome che gli avete assegnato

B) Muoversi in uno sheet specifico usando le variabili (Valore Indice o Index value)

La regola è questa: per excel il primo foglio di calcolo (quello tutto a sx) assume valore 1, il secondo 2 il terzo 3 e così via. Non importa come li chiamiate, se li spostate, modificate o cancellate: il foglio di calcolo più a sx avrà sempre per excel valore 1, gli altri a seguire 2,3,4 ecc.

Detto questo:

Sheets(1).Select ' Seleziona il foglio di calcolo più a sx
Sheets(2).Select ' Seleziona il secondo
Sheets(3).Select ' Seleziona il terzo e così via
C) Muoversi sul successivo foglio o sul precedente

ActiveSheet.Next.Select ' Seleziona il foglio di calcolo successivo
ActiveSheet.Previous.Select ' Seleziona il foglio di calcolo precedentre

Ciao alla prox.
Salumi :v





lunedì 24 gennaio 2011

VBA - Excel- Operazioni con le stringhe

Sto lavorando ad una routine che mi trasfromi in automatico in pdf (la posterò se ce la farò) tutti i file presenti in una directory. Nel scriverla ho usato diverse operazioni con le stringhe. Ho deciso di riassumerle qui.

Funzione
Descrizione
Esempio
Risultato
Len() Determina quanto è lunga una stringa di caratteri
variabilepippo= Len("asd") 3 (caratteri)
LCase() Converte i caratteri della stringa da maiuscoli a minuscoli variabilepippo = LCase("ASD") asd
UCase() Converte i caratteri da minuscoli a maiuscoli NomeVar = UCase("Asd") ASD
StrReverse() Inverte le stringhe variabilepippo = StrReverse("Asd") dsA
Left() Estrae i primi (n) caratteri di una stringa variabilepippo = Left("Asd", 2) As
Right() Estrae gli ultimi (n) caratteri di una stringa variabilepippo = Right("Asd", 2) sd
Mid() Estrae i caratteri (n) di una stringa, partendo da un punto specifico
variabilepippo = Mid("asdlol" 3,4)

NB 3 = parti dal terzo carattere compreso
NB 4= ed estrai 4 caratteri
dlol
InStr() Trova una parte di stringa su un’altra variabilepippo = InStr("asd", "d") 3
LTrim() Elimina tutti gli spazi iniziali variabilepippo = LTrim(" asd ") "asd "
RTrim() Elimina tutti gli spazi finali variabilepippo = RTrim(" asd ") " asd "
Trim() Elimina tutti gli spazi iniziali e finali variabilepippo = Trim(" asd ") "asd"
CStr() Converte in una stringa un numero intero
variabilepippo = CStr(10) "10"
*CInt() Converte in numero intero stringa
variabilepippo = CInt("10") 10

alla prox :v

mercoledì 19 gennaio 2011

VBA - Trova e sostituisci

"Una semplice routine in VBA per trovare del testo all'interno di una cella e sostituirlo con altro"

Oggi mi son trovato a dover cancellare da un foglio excel con 25.000 record una speficica parola. In una colonna, infatti, oltre ad una data che mi è utile per un'analisi successiva , c'è la parola ASD.

Ad esempio:
11-04-1979 ASD
11-05-1979 ASD
11-06-1979 ASD

...



L'alternativa ad utilizzare VBA è il classico Trova e Sostituisci, dove nel campo Trova mettete "ASD" e in sostituisci lasciate vuoto.

Siccome devo automatizzare altre cose deciso di compilare una routine anche per questa piccola banalità.Eccola:


Sub togliasd()
Sheets(1).Activate
Cells.Replace What:="ASD", Replacement:="", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub


Vediamola nel dettaglio passo passo:

  • Sub togliasd() -> inizializzo la routine e la chiamo "togliasd".
  • Sheets(1).Activate -> attiva il foglio di calcolo che mi interessa, il primo in ordine di apparizione, in alternativa potete mettere il nome che avete dato allo sheet al poste del numero 1.
  • Cell.Replace -> richiama la funzione di sostituzione
  • What:= -> Il parametro che indica cosa volete sostituire. Il cosa deve essere indicato dopo l'uguale e tra virgolette "ASD".
  • Replacement:= -> Il parametro che indica con che cosa volete sostituire. Il con che cosa, sempre dopo l'uguale e sempre tra virgolette, in questo caso è nulla, quindi tra le "" non scrivo nulla.
  • SearchOrder :=xlByRows -> Search order indica come deve procedere la ricerca, se riga per riga o (xlByRows) colonna per colonna (xlByColumns). In questo caso riga per riga. NB (il trattino basso _ serve per andare a capo)
  • MatchCase:=False -> indica se la ricerca deve essere "case sensitive" o meno. Ossia se ritenga che maiuscole e minuscole siano la stessa cosa o meno.
  • SearchFormat:=False -> è un ulteriore attributo di ricerca. In particolare si può selezionare il formato della cella...
  • ReplaceFormat:=False ->... e sostituirlo con quello messo qui.
  • End Sub -> conlude la routine.
Ciao :v


NB:
Per i perfezionisti attenti ai cicli di clock...e per chi vuole sostituire una specifica parola solo in una colonna o in una selezione specifica, aggiungete dopo Sheets(1).Activate:

Range("A1:R99").Select -> selezionare il rettangolone di celle da A1 a R99

oppure, nel caso in cui vogliate selezionare una o più colonne...

Columns("x:y").Select -> con x e y sostituite il range di colonne che volete selezionare es: B:Z" e per una colonna sola B:B

ari ciao :v