Ich möchte in VBA automatisch ein Modul erstellen mit variablem Proceduretext.
Das funktioniert alles bestens; sobald ich aber die Schritte nicht einzeln starte, sondern hintereinander hänge erfolgt die Fehlermeldung "
Sub oder
Function nicht definiert", weil in diesem Moment die Procedure "Execute_VBA" noch nicht lauffähig ist.
Ich habe das Ganze mit einer Schlaufe (Application.Wait oder Sleep) probiert, aber ohne Erfolg.
Kann mir jemand weiterhelfen, wie ich das in einem Aufruf hinkriege?
Nachfolgend der Code:
Sub create_vba_execute(wsRangeVal As String)
Dim VBComp As Object
' Modul "Modul_VBA_execute" löschen
With ActiveWorkbook.VBProject
For Each VBComp In .VBComponents
If VBComp.Name = "Modul_VBA_execute" Then
.VBComponents.Remove .VBComponents(VBComp.Name)
End If
Next
End With
' Modul "Modul_VBA_execute" erstellen
Set modNew = ThisWorkbook.VBProject.VBComponents.Add(1)
With modNew
.Properties("Name") = "Modul_VBA_execute"
End With
' Prozedur erstellen
strCode = "" & vbLf
strCode = strCode & "
Sub Execute_VBA()" & vbLf
strCode = strCode & "" & wsRangeVal & "" & vbLf
strCode = strCode & "End Sub
"
'
' Modul erstellen
ThisWorkbook.VBProject.VBComponents("Modul_VBA_execute").CodeModule.AddFromString strCode
End Sub
'----------------------------
... und hier der Aufruf der nicht funktioniert:
'----------------------------
Sub start()
Dim wsRangeVal As String
wsRangeVal = "Msgbox ""Huhuuuuu"""
create_vba_execute wsRangeVal
'Sleep 2000 'bringt nichts!
Execute_VBA 'dieser Aufruf funktioniert nur in einem separaten Schritt
End Sub
'----------------------------
Achtung: "cut'n'paste" zerstückelt den Code teilweise...
Vielen Dank für eure Hilfe
Gruss Tomtom