Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 9 su 9

Macro nascondi automatica!

  1. #1
    thejack non è in linea Novello
    CIAO A TUTTI, sono nuovissimo. Cercavo info su macro che partono da sole ed eccomi qui.
    Ho letto molte discussioni ... lavoro da poco con VBA, ma è stimolante.

    Sto cercando di automatizzare un file excel. Spero di spiegarmi bene.

    Ho un elenco CORSI (ognuno di loro occupa 4 righe) con diversi parametri.
    Alla fine della PRIMA RIGA DI OGNI CORSO ho lo "stato corso" con un CONVALIDA ad elenco: "Da completare", "completato", "nascondi".

    Vorrei associare una MACRO che parte automaticamente che:
    quando imposto "nascondi" mi nasconde le 4 righe di quel corso.

    Come posso fare?
    _____________________________________________
    Ho trovato queste difficoltà:
    1. Non riesco ad attivare la macro automaticamente;
    2. Non so impostare dei riferimenti relativi alle 4 righe che valgano per tutto il foglio di calcolo.

    _____________________________________________
    Son riuscito a fare molte macro, attingendo qua e la ad intuito.
    Dove posso avere delle informazioni generali sui comandi VBA e sulle applicazioni più tipiche? (oltre a questo forum).

    GRAZIE A TUTTI!

    Se serve allego il file
    Ultima modifica di thejack; 16-03-2006 16:52 

  2. #2
    L'avatar di dragone bianco
    dragone bianco non è in linea Amanuense
    quando imposto "nascondi" mi nasconde le 4 righe di quel corso
    Vuoi dire utilizzando il comando nascondi righe

    il primo problema è trovare un evento che esegua questo Codice
    potresti utilizzarel'evento Modifica Foglio (Worksheet_Change(ByVal Target As Range)) Target restituisce le celle modificate è legato al Singolo foglio
    oppure l'evento
    Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Questo è più globale si verifica quando modifichi una cella di qualunque foglio presente nella file di excels.
    Sh restituisce il foglio modificato
    Target restituisce le celle modificate

    2° crea una routine con una variabile di richiesta
    Es
    Sub Nascondi(valore as String)
    Rows(Valore & ":" & Valore).EntireRow.Hidden = True
    end Sub

    Così facendo puoi decidere tu di volta in volta cosa nascondere

    Per richiamare fai così
    call Nascondi("5")
    in questo esempio ti nasconde la riga 5

    Ciao
    ℹ️ Leggi di più su dragone bianco ...

  3. #3
    thejack non è in linea Novello
    Grazie Dragone. Si comando nascondi righe.
    Credo di non essere in grado di fare tutte queste cose.
    Non ho dimesticchezza con i moduli e con i comandi.
    Comunque:
    Worksheet_Change(ByVal Target As Range
    cosa sostituisco con i valori e cosa fa parte del comando? - a che livello siamo.

    Sub Nascondi(valore as String)
    Rows(Valore & ":" & Valore).EntireRow.Hidden = True
    end Sub

    Esempi do come andrebbe compilato? :-)
    (valore as String)
    (Valore & ":" & Valore)

    Ma poi la macro partirebbe automaticamente?
    Cioè nel momento in cui seleziono nascondi, spariscono le righe?

    Grazie Dragone (forse dovrei studiare l'abc prima di fare l'uvz)



    Quote Originariamente inviato da dragone bianco
    Vuoi dire utilizzando il comando nascondi righe

    il primo problema è trovare un evento che esegua questo Codice
    potresti utilizzarel'evento Modifica Foglio (Worksheet_Change(ByVal Target As Range)) Target restituisce le celle modificate è legato al Singolo foglio
    oppure l'evento
    Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Questo è più globale si verifica quando modifichi una cella di qualunque foglio presente nella file di excels.
    Sh restituisce il foglio modificato
    Target restituisce le celle modificate

    2° crea una routine con una variabile di richiesta
    Es
    Sub Nascondi(valore as String)
    Rows(Valore & ":" & Valore).EntireRow.Hidden = True
    end Sub

    Così facendo puoi decidere tu di volta in volta cosa nascondere

    Per richiamare fai così
    call Nascondi("5")
    in questo esempio ti nasconde la riga 5

    Ciao
    Ultima modifica di thejack; 17-03-2006 09:09 

  4. #4
    L'avatar di dragone bianco
    dragone bianco non è in linea Amanuense
    Ti faccio un po di scuola.
    VB e quindi VBA è basato sugli eventi, un evento è un'azione che si fa es Click su un pulsante, la modifica di una cella di excels Ecc.
    Un evento esegue il codice che tu gli scrivi dentro ogni volta che quel evento si riproduce.
    Questi eventi sono impostati per ogni oggetto e le eventuali variabili restiuiscono alcuni dati legati all'evento.
    Se vai su Strumenti - Macro - Visual basic Editor
    Se fai un doppio clicck sulla voce ThisWorkBook(Rappresenta l'intera cartella di excel) nella parte centrale in alto nei menu a tendina(a sinista) scegli la voce WorkBook e nel menu a tendina(a Destra) hai l'elenco di tutti gli eventi, trovi anche quello che ti ho descritto.

    L'idea è sfuttare l'evento di modifca Cella e verificare che sia stata modificata la cella da te scelto se non è quella il codice termina altrimenti controlla se la cella contiene la parola da te scelto se é così esegue il codice per nascondere la riga.

    Così va meglio.

    Ciao
    ℹ️ Leggi di più su dragone bianco ...

  5. #5
    thejack non è in linea Novello
    Devo dire che hai un nick appropriato.
    Un drago in competenza, con l'animo da paladino.

    Piu tardi provo, spero di riuscirci.

    GRAZIEEEE!!



    Quote Originariamente inviato da dragone bianco
    Ti faccio un po di scuola.
    VB e quindi VBA è basato sugli eventi, un evento è un'azione che si fa es Click su un pulsante, la modifica di una cella di excels Ecc.
    Un evento esegue il codice che tu gli scrivi dentro ogni volta che quel evento si riproduce.
    Questi eventi sono impostati per ogni oggetto e le eventuali variabili restiuiscono alcuni dati legati all'evento.
    Se vai su Strumenti - Macro - Visual basic Editor
    Se fai un doppio clicck sulla voce ThisWorkBook(Rappresenta l'intera cartella di excel) nella parte centrale in alto nei menu a tendina(a sinista) scegli la voce WorkBook e nel menu a tendina(a Destra) hai l'elenco di tutti gli eventi, trovi anche quello che ti ho descritto.

    L'idea è sfuttare l'evento di modifca Cella e verificare che sia stata modificata la cella da te scelto se non è quella il codice termina altrimenti controlla se la cella contiene la parola da te scelto se é così esegue il codice per nascondere la riga.

    Così va meglio.

    Ciao

  6. #6
    thejack non è in linea Novello
    Ho scritto questo:

    End Sub

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)

    End Sub


    Sub Nascondi(valore As String)
    Rows(0 & ":" & 3).EntireRow.Hidden = True
    End Sub

    End Sub
    _________________________________
    Ma devo sostituire "byval" con il valore?

    Non so proprio nulla :-((

    Sulla routine nascondi ho cercato di dirgli di nascondere le righe 0:3 (cioè quella in cui c'è il valore nascondi e le 3 sotto), ma non son sicuro se è giusto, se le le & devo lasciarle o meno.

    PS. Forse senza che perdi tempo con un me, magari sai dirmi dove posso quanto meno darmi un'infarinatura generale su come si scrivono i comandi ed eventi.


    GRAZIE.

  7. #7
    thejack non è in linea Novello
    Ho scritto questo:

    End Sub

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)

    End Sub


    Sub Nascondi(valore As String)
    Rows(0 & ":" & 3).EntireRow.Hidden = True
    End Sub

    End Sub
    _________________________________
    Ma devo sostituire "byval" con il valore?
    Cosa devo sostituire e con cosa?

    Non so proprio nulla :-((

    Sulla routine nascondi ho cercato di dirgli di nascondere le righe 0:3 (cioè quella in cui c'è il valore nascondi e le 3 sotto), ma non son sicuro se è giusto, se le & devo lasciarle o meno.

    PS. Forse senza che perdi tempo con me, magari sai dirmi dove posso quanto meno darmi un'infarinatura generale su come si scrivono i comandi ed eventi.

    GRAZIE.

  8. #8
    L'avatar di dolcissimo
    dolcissimo non è in linea Scribacchino
    Quote Originariamente inviato da thejack
    Ho scritto questo:
    End Sub

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)

    End Sub


    Sub Nascondi(valore As String)
    Rows(0 & ":" & 3).EntireRow.Hidden = True
    End Sub

    End Sub
    Ma che tipo di routine è questa?
    ℹ️ Leggi di più su dolcissimo ...

  9. #9
    L'avatar di dragone bianco
    dragone bianco non è in linea Amanuense
    ciao thejack
    Vedo che hai un po di lacune
    VBa come descritto prima utilizza le azioni per eseguirre del codice
    Es

    if range("A1").value=10 then
    msgbox "Testo Corretto"
    else
    msgbox "Testo Non Corretto"
    end if
    (se la cella A1 contiene il valore 10 visualizza un messaggio con Suscriito Testo Corretto se non è cosi il messaggio avrà Suscriito Testo non Corretto

    ora (sia per motivi di ordine, o perchè una certa sequenza di codice ti serve in più punti e per non trascriverlo tutto), esistono le routine
    Vengono create da chi scrive il codice
    Come si scrivono
    Sub nomeRoutine(Variabili as ....)
    qui ci sarà il codice.....
    End sub
    Le variabili dichiarate tra parentesi sono dati che tu vuoi passare alla routine
    Le usi come le variabili dichiarate con Dim
    Servono per rendere le routine più dimamiche

    Es routine senza variabili
    sub prova()
    range("A1").value=10
    range("A2").value=11
    range("A3").value=12
    End Sub

    per eseguire il il codice di una routine(ogni volta che tiserve) devi utilizzare questo codice
    call prova (per l'esempio di prima)
    Tutte le volte che lo esegui scrive nelle celle A1 A2 A3 i valori 11 12 13

    Se invece la routine è semore la stessa ma ti serve con diversi parametri gli inserisci le variabili
    Es(riprendo Quella di prima)
    sub prova(Colonna as string,Valore as string)
    range(Colonna & "1").value=Valore
    range(Colonna & "2").value=Valore
    range(Colonna & "3").value=Valore
    End Sub

    in questo caso per richiamare la routine devi inserire i valori delle variabili
    call Prova("A","11")
    in questo caso la routine Scrive nelle celle A1 A2 A3 il valore 11
    se invece se la chiamo così
    call Prova("B","122")
    in questo caso la routine Scrive nelle celle B1 B2 B3 il valore 122
    (le routine vengono scritte una volta sola e poi vengono richiamate tramite il Call)
    Spero che con questo le colmi alcune sulle routine.
    ℹ️ Leggi di più su dragone bianco ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 10
    Ultimo Post: 03-05-2014, 10:36
  2. Attivazione automatica di un eleco di Macro
    Da raf nel forum Microsoft Word
    Risposte: 3
    Ultimo Post: 05-03-2011, 00:57
  3. Macro automatica excel aggiorna pivot
    Da Bairos nel forum Microsoft Excel
    Risposte: 3
    Ultimo Post: 26-01-2010, 11:41
  4. [MS WORD 2007 / vba] Esecuzione automatica macro
    Da Fiorentino85 nel forum Microsoft Word
    Risposte: 1
    Ultimo Post: 20-03-2009, 15:23
  5. Macro automatica messaggio di benvenuto
    Da ilmora nel forum Microsoft Word
    Risposte: 3
    Ultimo Post: 13-05-2005, 19:47