Una piccola raccolta di istruzioni di varia
(f)utilità.
(sarà aggiornata
periodicamente; gli aggiornamenti saranno posti alla fine della pagina.)
Worksheets(1).ScrollArea =
"A1:L22" '(area che rimane fissa a
video)
'mentre per riapplicare lo scrolling
Worksheets(1).ScrollArea = ""
|
Sub NascondeRiga()
ScopriRiga 'viene prima chiamata
questa routine per scoprire ev. righe nascoste
Dim CL As Object
For Each CL In Range("A1:A50")
If CL.Value = "" Then CL.EntireRow.Hidden = True
Next CL
End Sub
e questa per scoprire tutte le righe nascoste:
Sub ScopriRiga()
Cells.EntireRow.Hidden = False
End Sub |
Sub EliminaRighe()
For Each cella In Range("A1:A200")
If cella.Value = "" Then
cella.EntireRow.Delete
End If
Next cella
End Sub |
Private Sub Workbook_Open()
Application.WindowState = xlMinimized
End Sub
e per ripristinare, all'uscita da Excel
Application.WindowState =
xlMaximized |
per un foglio
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
per una selezione
Selection.PrintOut Copies:=1,
Collate:=True |
-
Disabilitare/Abilitare barre dei menù.
(attenzione:
poichè queste modifiche resterebbero su Excel quando
si chiude il file, e resterebbero anche alla riapertura altri file dove c'è
il bisogno che i menù si vedano, DOVRETE ripristinare i menù
usando le istruzioni al rovescio, nell'evento BeforeClose del workbook)
'questa toglie la barra dei
menù
Application.CommandBars.ActiveMenuBar.Enabled = False
'questa toglie la barra menù Standard
Application.CommandBars("Standard").Enabled = False
'oppure questa disabilita l'icona "nuovo"
dalla barra menù "Standard"
Application.CommandBars("Standard").Controls.Item(1).Enabled = False
per riattivarle:
'questa rimette la barra
dei menù
Application.CommandBars.ActiveMenuBar.Enabled = True
'questa rimette la barra menù Standard
Application.CommandBars("Standard").Enabled = True
'oppure questa abilita l'icona "nuovo"
dalla barra menù "Standard"
Application.CommandBars("Standard").Controls.Item(1).Enabled = True
|
Spostarsi nell'Editor di Visualbasic,
selezionare dal menù Strumenti/Proprietà
di VBAProject , e nella finestra che si apre scegliere "Protezione",
mettere un segno di spunta a "proteggi ecc. ecc"
e inserita la password, salvare la cartella, uscire e
quando si rientra, aprire il progetto cartella: verrà richiesta
la password, altrimenti il codice non sarà visibile. (Questo anche se
in apertura foglio, avremo disabilitato le macro). |
all'apertura della cartella (WorkBook)
Private Sub Workbook_Open()
UserForm1.Show
End Sub
all'apertura di un Foglio (Worksheet)
Private Sub
Worksheet_Activate()
UserForm1.Show
End Sub |
Workbooks.Open Filename:=
"C:\Documenti\NomeFile.xls", ReadOnly:=True |
Cells.Select
ActiveSheet.ResetAllPageBreaks |
Sub MisuraMe()
'la lettura viene eseguita in byte e quindi la
convertiamo in kb
Y = Application.MemoryUsed
X = Val(Y / 1024)
MsgBox "Microsoft Excel sta usando " & X & " Kb di memoria."
End Sub |
Private Sub
CommandButton1_Click()
X = TextBox1.Text
Worksheets("" & X & "").Select
End Sub |
per un foglio, con messaggio di avviso:
Private Sub
Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "Il tasto destro è stato disabilitato."
Cancel = True
End Sub
per tutti i fogli, senza messaggio:
Private Sub
Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As
Range, Cancel As Boolean) 'è tutta una
riga
Cancel = True
End Sub |
-
Nascondere Righe e/o Colonne. indicare
il numero di riga (es. 10), e la lettera per la colonna, per ripristinare,
stesse istruzioni con False al posto di
True:
ActiveSheet.Rows(10).Hidden
= True
oppure per più righe, indicare numero da : a
numero, tra doppi apici:
ActiveSheet.Rows("8:12").Hidden
= False
per le colonne:
Worksheets("Foglio1").Columns("C").Hidden
= True
stesso discorso per più colonne:
Worksheets("Foglio1").Columns("C:F").Hidden
= True |
-
Reperire il nome di un file che si apre.
Quando si vuole memorizzare il nome di un file che si apre, magari facendolo
scrivere in una cella, (esempio in A1), creare una macro con questa
istruzione: (segnalazione di Luca Paolini). Si aprirà la finestra "Apri
File" e verrà memorizzato il file che si selezionerà :
NewFile =
Application.GetOpenFilename
Range("A1").Value = NewFile |
-
Salvare in automatico la cartella su cui
si è lavorato, alla chiusura della cartella stessa o di Excel. Si sfrutta
l'evento Workbook_BeforeClose, e si evita la richiesta di salvataggio che
Excel ci propone, con questa semplice istruzione:
Private Sub
Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Save 'questa riga è
l'istruzione
End Sub |
-
Inserire/Togliere BloccaRiquadri.
L'opzione Bloccariquadri serve per tenere bloccate una parte di celle del
foglio di lavoro mentre le rimanenti celle possono scorrere liberamente
agendo sulle barre di scorrimento. Si possono bloccare solo le righe
(selezionando prima l'intestazione di riga), oppure solo le colonne
(selezionando prima l'intestazione di colonna), oppure righe e colonne
insieme se si seleziona una cella e si applica bloccariquadri. il blocco
avverrà sempre a partire dalla riga sopra a quella selezionata, o la colonna
a sinistra rispetto a quella selezionata, o le righe sopra e le colonne a
sinistra rispetto alla cella selezionata. Esempio. selezioniamo la cella C5
(terza colonna e quinta riga): saranno bloccate le colonne A e B e le righe
dalla quarta alla prima. Queste le istruzioni per applicare o togliere
bloccariquadri (FreezePanes)
'Bloccare le righe (volendo bloccare le prime due
righe):
ActiveSheet.Rows(3).Select
ActiveWindow.FreezePanes = True
oppure:
Rows("3:3").Select
ActiveWindow.FreezePanes = True
'Bloccare le colonne (volendo bloccare le prime 3
colonne A-B-C)
ActiveSheet.Columns("D").Select
ActiveWindow.FreezePanes = True
oppure:
Columns("D:D").Select
ActiveWindow.FreezePanes = True
'Sbloccare (togliere) ogni bloccariquadri:
ActiveWindow.FreezePanes =
False |
-
Passare da Stile riferimento A1 a Stile R1C1
- Stile A1 le Colonne sono identificate con Lettere alfabetiche.
Stile R1C1 le Colonne sono identificate con Numeri. La proprietà
ReferenceStyle si applica solo all'oggetto Application, ossia a Excel
e quindi a tutta la cartella di lavoro. Attenzione:
ricordarsi che una volta applicato uno stile, lo stesso rimane su Excel
anche per successive aperture, ripristinare quindi lo stile originario
usando l'evento Workbook_BeforeClose.
per passare a Stile R1C1:
With Application
.ReferenceStyle = xlR1C1
End With
per ritornare a Stile A1:
With Application
.ReferenceStyle = xlA1
End With |
Private Sub
Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Columns(2)) Is Nothing Then
ActiveSheet.Unprotect 'sproteggiamo il
foglio se la
cella selezionata non è nella B
Exit Sub
Else
ActiveSheet.Protect 'e proteggiamo il
foglio attivo
End If
End Sub |
Eliminare la richiesta di Aggiornamento
Collegamenti. - Quando una cartella di lavoro contiene
collegamenti ad altri fogli o celle di cartelle chiuse, viene posta da
Excel una richiesta di aggiornare o meno i collegamenti. E' possibile
eliminare la richiesta sfruttando l'evento
Workbook_Open ed inserendo la seguente istruzione:
Private Sub Workbook_Open()
Application.AskToUpdateLinks = False
'istruzione
End Sub |
Sub ChiamaCalcolatrice()
Dim Pippo
Pippo = Shell("C:\WINDOWS\System32\CALC.EXE", 1)
End Sub |
-
Conoscere la versione del Sistema Operativo.
- può necessitare di impostare istruzioni vba che cambierebbero se
cambia il S.O. (ad esempio la chiamata alla Shell di sistema cambia tra
Windows98 e WindowsXP). Per rintracciare via codice la versione che
identifica il SO e creare quindi condizioni diverse (If...Then...Else), si
può usare questa istruzione che restituisce un messaggio con la versione del
SO del computer che state usando:
Sub DimmiSO()
MsgBox Application.OperatingSystem
End Sub
--------------------------------------------------------
per WindowsXP si otterrebbe questa informazione:
"Windows (32-bit) NT 5.01"
sarà possibile quindi impostare istruzioni per
quel sistema lasciando ad Else il compito di altre istruzioni;
esempio:
If
Application.OperatingSystem = "Windows (32-bit) NT 5.01" Then
..istruzioni da eseguire in
questo caso
Else
..istruzioni da eseguire in
tutti gli altri casi
End If |
-
Colorare una cella SE conterrà un certo valore
- Potremo sfruttare l'evento Change del
Worksheet che si verifica quando scriviamo in
una cella, modificandone il contenuto (sia che la cella sia vuota o anche
cambiando un valore già residente). Sfrutteremo l'argomento
Target dell'evento, che identifica la cella che
ha subito il cambiamento, ponendo una condizione con If..Then
Private Sub
Worksheet_Change(ByVal Target As Range)
If Target = 25 Then 'se il
valore immesso nella cella è uguale (esempio: 25), allora
Target.Interior.ColorIndex = 3 'si
colora la cella di rosso
End If
End Sub |
|