Print   Search   Utenti   Join     Share : FaceboolTwitter
-gimar-
Wednesday, March 12, 2008 12:18 AM
Dall'idea di pinzerik

dall'idea di pinzerik (che credevo avesse spostato il suo topic qui e scusa se nella presentazione ho sbagliato il tuo nick)di raccogliere un po di macro di varia utilità,ne posto qualcuna anche io

*

Limitare l'area da visualizzare a video. (disabilita le barre di scorrimento)

Worksheets(1).ScrollArea = "A1:L22" '(area che rimane fissa a video)


'mentre per riapplicare lo scrolling
Worksheets(1).ScrollArea = ""


*

Nascondere le righe vuote. (in una tabella elenco, scelta una Colonna (la A per esempio) quando si voglia riassumere i dati nascondendo ev. righe vuote)

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

*

Cancellare righe vuote
(in una tabella o elenco, scelta una Colonna (la A per esempio) quando si voglia cancellare le righe corrispondenti alle celle in A vuote )

Sub EliminaRighe()

For Each cella In Range("A1:A200")
If cella.Value = "" Then
cella.EntireRow.Delete
End If
Next cella

End Sub

*

Ridurre a icona Excel. (quando si voglia ridurre Excel a icona per lasciare lo schermo ad una userform (in questo caso si sta sfruttando l'apertura della cartella))

Private Sub Workbook_Open()
Application.WindowState = xlMinimized
End Sub

e per ripristinare, all'uscita da Excel

Application.WindowState = xlMaximized

*

Stampare un foglio o una selezione di celle.

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


*

Proteggere la visualizzazione del codice vba.

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).

*

Automatizzare l'apertura di una UserForm. All'apertura della cartella di lavoro o di un foglio

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

*

Apertura di un file in sola lettura
. Indicare il percorso che mira al file che interessa. L'apertura in sola lettura non consente modifiche al file così aperto.

Workbooks.Open Filename:= "C:\Documenti\NomeFile.xls", ReadOnly:=True

*

Eliminare le Interruzioni di pagina
. Per eliminare in un colpo solo tutte le interruzioni di pagina presenti su un Foglio .

Cells.Select
ActiveSheet.ResetAllPageBreaks

*

Misurare la memoria usata da Excel
. Se volete sapere quanta memoria sta utilizzando la vostra applicazione, provate questa:

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

*

Selezionare un Foglio di lavoro scrivendo il nome del foglio in una TextBox su una UserForm, e usando l'evento Click di un CommandButton.

Private Sub CommandButton1_Click()
X = TextBox1.Text
Worksheets("" & X & "").Select
End Sub

*

Disabilitare il tasto destro del mouse
. In questo modo si disabilita anche la comparsa del menù contestuale che appare quando si clicca destro sulle celle del foglio di lavoro:

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: . 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

*

Proteggere un intervallo (celle o colonne o righe) da scrittura. Si può sfruttare l'evento SelectionChange del Worksheet e con Intersect limitare l'azione solo ad una determinata area. L'esempio sotto blocca tutte le celle della colonna B. Ovviamente dovremo lasciare l'opzione "bloccata" a tutte le celle.

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

*

Richiamare da Excel la Calcolatrice di sistema. - A volte può tornare utile avere a disposizione su un foglio di lavoro, una calcolatrice; questa una routine possibile (per Win XP) che sfrutta la Shell di sistema:

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

sperando sia cosa gradita
saluti
gianni [SM=x423053]

Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa click here
Tutti gli orari sono GMT+01:00. Adesso sono le 4:12 AM.
Copyright © 2000-2014 FreeForumZone snc - www.freeforumzone.com