ich habe folgendes Problem:
In einer Userform A soll eine Auswahl getroffen werden.
Nach Klick auf einen Command-Button dieser Userform A soll aufgrund der Auswahl eine zweite Userform B erstellt werden.
Diese Userform B beinhaltet eine dynamische Anzahl an Checkboxen.
Für diese Check-Boxen soll folgender Code in das Modul der Userform B eingetragen werden:
Private Sub Check1_Click()
If Me.ActiveControl.Value = True Then
Call NextControls(Int(Right(Me.ActiveControl.Name, 1)))
Else
Call EndControls(Int(Right(Me.ActiveControl.Name, 1)))
End If
End Sub
Um zu vermeiden, dass von einem vorherigen Durchlauf noch schon Code im Modul der Userform B steht, wird dieser zuerst wie folgt aus dem Modul von Userform A aus gelöscht:
With ThisWorkbook.VBProject.VBComponents("WhatToDoWithObligo").CodeModule
.DeleteLines 1, .CountOfLines
End With
In der Zeile mit
.DeleteLines
erhalte ich bereits die erste Fehlermeldung:
Laufzeitfehler 5:
ungültiger Prozeduraufruf oder ungültiges Argument
Dies ist mir schon sehr rätselhaft, da ich in den Zeilen kein Fehler ausmachen kann...
Wenn ich diese Zeilen jedoch auskommentiere und direkt zu der Stelle springe, an welcher der Code für die Checkboxen eingetragen werden soll, wird es noch unverständlicher.
Der Code sieht hierbei wie folgt aus:
Call GenerateCheckCode(Counti)
GenerateCheckCode(Counti As Integer) ist eine Funktion.Diese sieht wie folgt aus:
Public Function GenerateCheckCode(Counti As Integer)
Dim ctrlName As String
ctrlName = Replace("Check" & Str(Counti), " ", "")
On Err GoTo Fehler
With ThisWorkbook
Set Codi = .VBProject.VBComponents("WhatToDoWithObligo").CodeModule
With Codi
.insertLines 1, _
"Private Sub " & ctrlName & "_Click()"
.insertLines 2, _
"If Me.ActiveControl.Value = True Then"
.insertLines 3, _
"Call NextControls(Int(Right(Me.ActiveControl.Name, 1)))"
.insertLines 4, _
"Else"
.insertLines 5, _
"Call EndControls(Int(Right(Me.ActiveControl.Name, 1)))"
.insertLines 6, _
"End If"
.insertLines 7, _
"End Sub"
End With
End With
Fehler:
With Err
.Raise .Number, _
.Source & "; " & Modulname & "; " & MySub, _
.Description, .HelpFile, .HelpContext
End With
End Function
Bei Aufruf der Funktion GenerateCheckCode(Counti As Integer) kommt in der Zeile
.insertLines 1, _"Private Sub " & ctrlName & "_Click()"
entweder die Fehlermeldung von oben (Laufzeitfehler 5) oder es erscheint die Meldung
Laufzeitfehler '-2147417848 (80010108)':
Automatisierungsfehler
Das aufgerufene Objekt wurde von den Clients getrennt
Woraufhin sich Excel selbst beendet.
Alternativ beendet sich Excel auch ab und zu ohne diese Meldung.
Ich bin völlig ratlos, da ich in meinem Code keine direkten Fehler finden kann und mir das Verhalten von Excel auch sehr rätselhaft vorkommt.
Für eine schnell Hilfe wäre ich sehr dankbar.
LG
Bernd