È necessaria una funzione "Registra" o "Ricompila" prima di utilizzare le funzioni create a livello di programmazione?Come utilizzare le funzioni del foglio di lavoro create in modo programmatico in VBA
Quando aggiungo una funzione a un foglio di lavoro, non posso utilizzarla finché non viene restituito il controllo al foglio di lavoro.
Ad esempio: Se il mio codice aggiunge una funzione a un foglio di lavoro, quindi tenta di utilizzarlo, ottengo il seguente errore: Errore di run-time 438 - L'oggetto non supporta questa proprietà o metodo Quando guardo il codice per i fogli di lavoro le funzioni sono lì e se eseguo il codice che utilizza solo le funzioni create, non c'è errore.
Come posso utilizzare le funzioni subito dopo averle create, senza fermarsi prima?
Ecco un esempio nel codice: viene visualizzato l'errore quando si eseguono TestingWorkSheetFunctions ma non quando si esegue TestWorkSheetFunction dopo la creazione delle funzioni.
esempio presuppone una nuova cartella di lavoro con almeno due fogli (Foglio1 e Sheet2)
Option Explicit
Public Sub TestingWorksheetFunction()
AddWorkSheetFunction
TestWorkSheetFunction
End Sub
Public Sub AddWorkSheetFunction()
'Sheet1's Function
Dim strFunctionCode As String
strFunctionCode = _
"Public Function HelloWorld() as string" & vbCrLf & _
vbCrLf & _
vbTab & "HelloWorld = ""Hello World from Sheet 1""" & vbCrLf & _
vbCrLf & _
"End Function"
ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets("Sheet1").CodeName).CodeModule.AddFromString strFunctionCode
'Sheet2's Function
strFunctionCode = _
"Public Function HelloWorld() as string" & vbCrLf & _
vbCrLf & _
vbTab & "HelloWorld = ""Hello World from Sheet 2""" & vbCrLf & _
vbCrLf & _
"End Function"
ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets("Sheet2").CodeName).CodeModule.AddFromString strFunctionCode
End Sub
Public Sub TestWorkSheetFunction()
Dim wsWorksheet1 As Object
Set wsWorksheet1 = ThisWorkbook.Sheets("Sheet1")
Dim wsWorksheet2 As Object
Set wsWorksheet2 = ThisWorkbook.Sheets("Sheet2")
MsgBox wsWorksheet1.HelloWorld()
MsgBox wsWorksheet2.HelloWorld()
End Sub
Grazie Passerby per fissare il mio codice di esempio. – LastDavid