Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Utilizzare stessa routine , vba, su pi fogli nello stesso lavoro

  1. #1
    Franco58 non  in linea Novello
    Ho creato un database per tre 3 Associazioni di volontariato
    I fogli 3, 4 e 5 contengono le tabelle identiche nella struttura di ogni Ass. con i relativi nominativi.
    Da un menu’ a tendina scelgo l’Associazione
    Da un altro menu’ a tendina, tramite la formula =INDIRETTO(), scelgo il nominativo;
    Con una macro denominata “MascheaRicerca” inserisco il nominativo con gli altri dati , in una stringa, sottostante, ricavata/estratta dalla tabella “Foglio3”
    Con un’altra macro salvo i dati in un foglio “Archivio”.
    La routin questa:
    Sub MascheraRicerca()
    If Range("B7").Value = "" Then
        Range("B7").Interior.Color = rgbRed
        Exit Sub
    End If
        Range("B7").Interior.Color = xlNone
    Application.ScreenUpdating = False
        Worksheets("Foglio3").Range("A1:E60").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
            "B6:B7"), CopyToRange:=Range("B11:F11")
        Worksheets("Foglio4").Range("A1:E60").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
            "B6:B7"), CopyToRange:=Range("B11:F11")
        Application.ScreenUpdating = True
    End Sub
    
    Ora vi chiedo gentilmente se potete dirmi come faccio a far compiere la stessa routin agli altri due fogli?
    Ad esempio se copio il tutto, da Worksheet in poi naturalmente, inserendo foglio 3 o 4 al posto del tre, la macro non copia nulla sulla stringa.
    Grazie

  2. #2
    Sgrubak non  in linea Scribacchino
    Ciao,
    sei nella sezione sbagliata... Leggi attentamente il regolamento per piacere e attendi che un moderatore sposti la discussione.

    Quote Originariamente inviato da Franco58 Visualizza il messaggio
    I fogli 3, 4 e 5 contengono le tabelle anche se identiche nella struttura di ogni Ass. con i relativi nominativi.
    Concettualmente sbagliato. Le tabelle (in questo caso saranno i Fogli) sono uniche. Poi distingui i record tra di loro creando una tabella che raccolga le associazioni e crei una FK (ovviamente su Excel pi complicato creare il vincolo, ma si pu fare con la validazione celle e gestendo gli errori). Avere tabelle uguali in un DB non la scelta pi indicata.

    Quote Originariamente inviato da Franco58 Visualizza il messaggio
    Ora vi chiedo gentilmente se potete dirmi come faccio a far compiere la stessa routin agli altri due fogli?
    Sposta la routine dal foglio ad un modulo ed esplicita il modificatore Public per la sub. Cos puoi chiamare la Sub da qualsiasi foglio. Dovrai per esplicitare il foglio di partenza, ossia:
    If Range("B7").Value = "" Then
        Range("B7").Interior.Color = rgbRed
        Exit Sub
    End If
    
    In questo caso sottinteso il Me, davanti a Range("B7"). Dovrai impostare il codice facendo in modo che al posto del Me ci sia il foglio che ti interessa. Magari passandolo come parametro alla Sub [MascheraRicerca].

  3. #3
    Franco58 non  in linea Novello
    Ciao
    il tasto dell macro di cui sopra nel foglio "INSERISCI", e la prima parte che hai riportato, mi serve per evitare
    che qualcuno utilizzi la macro senza aver ricercato prima il nominativo.
    Mi ripeto per essere pi chiaro possibile
    Se cancello "Worksheets (Foglio4)...e tutto il resto, e rimango con il solo Worksheets (Foglio3) - foglio da cui ho ricavato la stringa che mi restituisce il nominativo, il tutto funziona mentre, se ho tutto come postato precedentemente, il foglio 3 smette di restituirmi i dati, cosa che f il folgio 4.
    Grazie

  4. #4
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Franco, sei nuovo ma almeno il buonsenso di capire come strutturato il forum per fruire in modo adeguato... devi farlo.
    La sezione in cui hai postato non tecnico-tematica ma generale quindi sbagliata.
    Sposto io alla specifica sezione Excel, fai attenzione.

    P.s. smettiamo di scrivere che hai fatto un Database... perch Excel non affatto un database ma foglio di calcolo, e sono 2 cose impareggiabili e non confondibili.
    ℹ️ Leggi di pi su @Alex ...

  5. #5
    Franco58 non  in linea Novello
    Grazie mille Alex...

  6. #6
    Sgrubak non  in linea Scribacchino
    Quote Originariamente inviato da Franco58 Visualizza il messaggio
    se ho tutto come postato precedentemente, il foglio 3 smette di restituirmi i dati, cosa che f il folgio 4.
    Non ho capito molto, ma se hai il codice che hai postato, i dati in arrivo da Foglio3 non li vedrai mai. Li sovrascrivi con quelli in arrivo dal Foglio4.
    Se noti, il parametro CopyToRange per entrambi impostato a [Range("B11:F11")]. Che equivale a Me.Range("B11:F11")... Quel [Me] identifica il foglio su cui risiede il codice, ossia il foglio "INSERISCI". come se tu avessi scritto [Worksheet("INSERISCI").Range("B11:F11")]. Entrambe le istruzioni di filtro, ricopiano i dati nel medesimo Range di destinazione, quindi la tua macro prima scrive i dati in arrivo dal Foglio3 e subito dopo sovrascrive questi ultimi con quelli del Foglio4.

    Mi sfugge il collegamento di questo problema con la richiesta iniziale...

  7. #7
    Franco58 non  in linea Novello
    Ciao Sgrubak, grazie per l'interessamento
    In effetti il problema proprio quello che hai descritto tu..."Entrambe le istruzioni di filtro, ricopiano i dati nel medesimo Range di destinazione, quindi la tua macro prima scrive i dati in arrivo dal Foglio3 e subito dopo sovrascrive questi ultimi con quelli del Foglio4"
    Come posso evitarlo!!!

  8. #8
    Sgrubak non  in linea Scribacchino
    Quote Originariamente inviato da Franco58 Visualizza il messaggio
    Come posso evitarlo!!!
    Devi cambiare il parametro CopyToRange. Ne assegni due diversi. Sai tu dove vuoi che i dati vengano restituiti... Nello stesso foglio in celle diverse? In fogli diversi ma sempre nelle stesse celle? Puoi fare in mille modi. Dipende da come hai pensato il lavoro.

  9. #9
    Franco58 non  in linea Novello
    I dati dovrebbere essere restituiti/copiati nello stesso Foglio "INSERISCI" sulla stesso Range ("B11:F11")

  10. #10
    Sgrubak non  in linea Scribacchino
    Quote Originariamente inviato da Franco58 Visualizza il messaggio
    I dati dovrebbere essere restituiti/copiati nello stesso Foglio "INSERISCI" sulla stesso Range ("B11:F11")
    Non capisco... Cos facendo sovrascrivi i precedenti e visualizzi solo gli ultimi.

    Prova a dettagliare meglio quel che stai cercando di ottenere perch sta venendo fuori un po' di confusione. Sei partito col chiedere come richiamare una stessa Sub da pi fogli, per poi non volere che questa Sub sovrascriva i dati per poi invece volere che li sovrascriva...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Esportare su Excel (piu fogli nello stesso file o Pivot)
    Da Vagus nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 10-01-2014, 08:55
  2. Risposte: 0
    Ultimo Post: 15-02-2010, 18:38
  3. Copiare form nello stesso progetto
    Da licetinsanire nel forum Visual Basic 6
    Risposte: 10
    Ultimo Post: 18-05-2009, 17:17
  4. Richiamare Sub Rutine nello stesso Form
    Da WEM nel forum Microsoft Word
    Risposte: 4
    Ultimo Post: 20-11-2006, 11:52
  5. win98se+XPpro nello stesso PC ?
    Da giampetto nel forum Microsoft Windows
    Risposte: 2
    Ultimo Post: 29-03-2005, 08:57