als völlig zufälliges Beispiel habe ich jetzt mal den nachfolgenden Code.
Wenn ich ihn starte, wird
Dim VBCodeMod As codemodule
vom Debugger bemängelt, Benutzerdefinierter Typ nicht definiert.
Okay, wenn ich "As codemule" auskommentiere geht es aber es wird dann als nächstes
vbext_pk_Proc
als nichtdefinierte Variable vom Debugger moniert.
Abbhilfe brachte mir Google, mit deren Hilfe ich darauf kam daß der Verweis auf:
Microsoft Visual Basic for Applications Extensibility 5.3
gesetzt sein muß, dann klappt es.
Nur, wie, wo, kann ich direkt erfahren welchen Verweis ich denn nun brauche?
Gleiche Problematik habe ich mit
Dim xyz as Vbcomponents,
welcher Verweis fehlt denn da, denn das wird auch bemängelt?
Und warum wird trotz richtigem Verweis *annehm*
Dim VBCodeMod As codemodule
nicht in
Dim VBCodeMod As CodeModule
umgewandelt?
Danke ^ Gruß
Reinhard
Ps: Der Teilcode stammt aus einem Code von Michael Schwimmer, nicht das jmd. glaubt, von mir :-)))
Option Explicit
Sub tt()
Dim strModName As String, strProcName As String, VBCodeMod ' As codemodule
strModName = "Modul2"
strProcName = "Test"
If ProcedureExists(strModName, strProcName) Then
Set VBCodeMod = ThisWorkbook.VBProject.VBComponents(strModName).codemodule
With VBCodeMod
lngStartLine = .ProcStartLine(strProcName, vbext_pk_Proc)
lngHowManyLines = .ProcCountLines(strProcName, vbext_pk_Proc)
.DeleteLines lngStartLine, lngHowManyLines
End With
MsgBox "Die Prozedur " & strProcName & " wurde gelöscht."
Else
MsgBox "Modul oder Prozedur nicht vorhanden."
End If
End Sub
Function ProcedureExists(Modulname As String, Makroname As String) As Boolean
ProcedureExists = ThisWorkbook.VBProject.VBComponents(Modulname).codemodule. _
ProcStartLine(Makroname, vbext_pk_Proc) 0
End Function