Excel: passa l'oggetto cartella di lavoro da sub a userform

1
Vote

Voglio passare due oggetti (una cartella di lavoro aperta e un'altra una tabella) dalla procedura secondaria a userform. Li ho resi globali entrambi prima del sub.

Voglio passare due oggetti (una cartella di lavoro aperta e l'altra una tabella) dalla procedura secondaria a userform. Li ho resi globali entrambi prima del sottotitolo.
  1. Quando scrivo solo le due dichiarazioni pubbliche prima di Sub (sono impostate all'interno di Sub), funziona bene all'interno di Sub ma quando il form utente viene inizializzato, genera l'errore"Variabile oggetto o con variabile di blocco non impostata"
  • Quando scrivo solo le due dichiarazioni pubbliche prima di Sub (sono impostate all'interno di Sub), funziona bene all'interno di Sub ma quando il form utente viene inizializzato, genera l'errore"Variabile oggetto o con variabile di blocco non impostata"
  • Quando scrivo solo le due dichiarazioni pubbliche prima di Sub (sono impostate all'interno di Sub), funziona bene all'interno di Sub ma quando il form utente viene inizializzato, genera l'errore"Variabile oggetto o con variabile blocco non impostata""Variabile oggetto o con variabile blocco non impostata"
    Public N As Workbook
    Public E As ListObject
    Sub...
    
    Public N As Workbook Public E As ListObject Sub... N pubblica come cartella di lavoro Public E As ListObject Sub...
    1. Ho provato a impostare questi due oggetti prima di Sub, il Sub non viene eseguito, genera un errore di compilazione,"Procedura esterna non valida"
  • Ho provato a impostare questi due oggetti prima di Sub, il Sub non viene eseguito, genera un errore di compilazione,"Procedura esterna non valida"
  • Ho provato a impostare questi due oggetti prima di Sub, il Sub non viene eseguito, genera un errore di compilazione,"Procedura esterna non valida""Procedura esterna non valida"
    Public N As Workbook
    Set N=Workbooks.Open(ThisWorkbook.Sheets("New").Range("A1").Text)
    Public E As ListObject
    Set E=N.Sheets(1).ListObjects(1)
    Sub...
    
    Public N As Workbook Set N=Workbooks.Open(ThisWorkbook.Sheets("New").Range("A1").Text) Public E As ListObject Set E=N.Sheets(1).ListObjects(1) Sub... Pubblica N come cartella di lavoro Impostare N=Workbooks.Open (ThisWorkbook.Sheets ("New"). Range ("A1"). Text) Public E As ListObject Impostare E=N.Sheets (1) .ListObjects (1) Sub...

    Come passare le variabili oggetto dalle procedure Sub a Userforms? Attualmente l'unica soluzione che vedo è impostare gli oggetti sia nella procedura Sub che in Userform.

    Come passare le variabili oggetto dalle procedure Sub a Userforms? Attualmente l'unica soluzione che vedo è impostare gli oggetti sia nella procedura Sub che in Userform.

    Source

    vba excel

    -FaneDuru

    -Repairer

    1 -FaneDuru

    1 -FaneDuru

    -Repairer

    -FaneDuru

    1 Answer
    3
    Votes

    Aggiungi un Sub al tuo UserForm per impostare il tuo Workbook e ListObject oggetti.

    Modulo utente:

    Private pWB As Workbook
    Private pLO As ListObject
    
    Public Sub SetObjects(ByVal wb As Workbook, ByVal lo As ListObject)
        Set pWB=wb
        Set pLO=lo
    End Sub
    

    Nel tuo codice chiamante:

    Sub CallingCode()
        Dim UF As UserForm1 ' Don't use the global UserForm1 object
        Set UF=New UserForm1
        UF.SetObjects N, E
        UF.Show
    End Sub
    
    Source

    Potreste essere interessati

    © 2021   Risposta.org