Ciao, le variabili Dim possono anche non essere definite, in quanto Excel le adatta in automatico al tipo di dato che viene inserito, per la verità è Buona norma definirle, anche per un funzionamento più fluido, una volta ed anche adesso come ho detto, era Buona norma definirle perche ogni variabile definita occupa un certo numero di Bit, quella non definita occupa più Bit delle altre, prima ci si teneva molto a queste cose perche le memorie Ram non erano molto grandi, e si cercava di risparmiare ogni Bit, ma adesso che parliamo di GigaBit, la cosa acquista minore importanza tranne se poi le variabili sono migliaia allora la cosa, si che diventa di un certo peso.
per il foglio Ho pensato che il foglio "Elenco" fosse il principale, a questo punto non so quanti fogli contiene il tuo file, al momento solo due vedo, ma puoi fare una gestione dei fogli io uso questo metodo, come hai visto ho dichiarato una variabile privata nel modulo del form, devi toglierla e dichiarare 2 variabili pubbliche nel "Modulo1" e li che vanno messe tutte quelle pubbliche perche è il primo modulo che legge il VBA.
quindi sotto Option Explicit scrivi
Public Sh1 as Worksheet, Sh2 as Worksheet
Sub SetFG()
Set Sh1 = Worksheets("Elenco")
Set Sh2 = WorkSheets("Stampa A3")
End Sub
come vedi adesso le ho definite in quanto sono variabili oggetto, ho anche visto che ce un altro foglio nascosto per le quote di iscrizioni, basta aggiungere in "Sh3" per il nuovo foglio.
a questo punto quando lanci la macro per aprire il form in Userform_Activate
Private Sub UserForm_Activate()
Dim x
SetFG
Sh1.Activate
all'apertura del Form viene lanciata la macro "SetFG" ed avrai disponibili i fogli, con sh1.Activate ti posizioni sul Foglio1 se scrivi Sh2.activate il form viene visualizzato nel foglio2
però questo comporta che devi stare attento quando prendi o scrivi dati con Cells o Range gli devi dare il foglio giusto perche altrimenti il form che hai posizionato sul foglio2 farà riferimento al foglio2 e non al foglio1 dove sono i dati, ecco il motivo dell'uso di With...End With, ma puoi farlo anche singolarmente nel senso che devi copiare un dato da A1 del foglio1 ad A1 del foglio2, quindi scrivi
Sh1.range("A1"). copy Sh2.Range("A1")
con questo metodo puoi copiare o scrivere dove vuoi senza stare a scrivere come di norma
Sheets("Elenco").range("A1").copy Sheets("Stampa A3").Range("A1")
spero di essermi spiegato
Se non ricordi più quale variabile hai assegnato al foglio, a volte quando ne sono molti uno non si ricorda più e può commettere l'errore di prendere un foglio per un altro, basta che vai all'inizio del Modulo1 e ti leggi i vari nomi assegnati
Ciao By Sal (8-D
[Modificato da by sal 03/08/2023 19:13]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie
clicca qui