Collegare una macro a diversi fogli excel in VBA

Anonimo
2017-10-23T14:24:50+00:00

Ciao,

Io ho inserito nel foglio 1 più Command button che devono rimandare alla stessa macro (con userform ecc..) e voglio che in base alla command button selezionata mi registri i dati inseriti nella userform in fogli diversi.

Esempio:

Se schiaccio sopra il Command Button "Prova1" voglio che i dati siano registrati nel foglio con nome Prova1

Se schiaccio sopra il Command Button "Prova2" voglio che i dati siano registrati nel foglio con nome Prova2

Come posso fare?

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2017-10-24T11:40:09+00:00

File scaricato e rilevato i seguenti errori :-)

Non avevi creato un modulo standard dove inserire la dichiarazione pubblica

Public WsDestinazione As Worksheet

Nelle due macro "click" delle CommandButton non avevi anteposto l'istruzione Set

Quando si assegna ad una variabile che rappresenta un oggetto (ad es. cartella di lavoro, foglio di lavoro, cella o intervallo di celle) occorre anteporre sempre l'istruzione Set.

Quindi:

Private Sub PinotBianco_Click()

  Set WsDestinazione = ThisWorkbook.Worksheets("PinotBianco")

  UserForm1.Show

End Sub

Private Sub PinotGrigio_Click()

  Set WsDestinazione = ThisWorkbook.Worksheets("PinotGrigio")

  UserForm1.Show

End Sub

Nella tua funzione "riga" avevi messo il punto prima di Range ma non avevi inserito il riferimento al foglio di lavoro impostato tramite WsDestinazione.

Quindi andava scritta così:

Function riga()

Dim i, n As Integer

  With WsDestinazione

    For i = 4 To 100000

      If .Range("A" & i) = "" Then

        n = i

        Exit For

      Else

      End If

    Next i

    riga = n

  End With

End Function

Qui trovi il tuo file modificato con le correzioni: File

Un consiglio è quello di scrivere il codice "a scalare". Personalmente lo trovo più leggibile rispetto ad un codice scritto "piatto". Ma sono scelte personali :)

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

19 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-10-24T09:38:51+00:00

    Hai messo il link ad una serie di file.

    Elimina quel link e postano uno diretto al file :)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-10-24T09:34:01+00:00

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-10-24T09:14:47+00:00

    Ma "Public WsDestinazione As Worksheet" è stato dichiarato nel modulo VBA del Foglio di lavoro o in un modulo standard?

    Se non è presente un modulo standard digita Alt+IM e viene creato un modulo standard.

    E scrivi solo lì l'istruzione:

    Public WsDestinazione As Worksheet

    Eventualmente, privo di dati personali, inserisci il link al file cariato in dropbox o altro servizio cloud, per dare un'occhiata.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-10-24T08:40:06+00:00

    Gentilissimo ma non ho risolto il problema con la selezione della riga giusta!

    Private Sub CommandButton1_Click()

    Dim riga As Integer

    For riga = 4 To 500

    With WsDestinazione

    If .Range("A" & riga) = "" Then

    .Range("B" & riga) = UserForm1.ComboBox1

    .Range("C" & riga) = UserForm1.TextBox2

    ...

    Se inserisco il punto mi dice come errore: necessario aggiungere oggetto

    La risposta è stata utile?

    0 commenti Nessun commento