10.01.2016, 01:04
Liebes Forum !
Ich möchte Euch gerne wieder einmal um Eure geschätzte Hilfe bitten, zumal ich mit meinem geringen Latein am Ende bin.
Ich habe einen Code zum Ändern eines Codes gefunden, der auch wie gewünscht alle Tabellenblätter durchläuft und die Änderung vornimmt, bis dann plötzlich als "objCodeModule" "DieseArbeitsmappe" erscheint und dann führt es zu einem gravierenden Excel-Fehler und Excel wird neu gestartet.
Ich dachte ich könnte mit einer Abfrage und überspringen zum Ende eine Lösung finden, aber leider nicht.
Ich vermute es hat was mit Select Case zu tun, aber ich kann auch mit Case=100 auch nichts anfangen.
Kann mir bitte jemand sagen, woran es liegt.
Vielen Dank.
Liebe Grüße aus Innsbruck
Helmut
Ich möchte Euch gerne wieder einmal um Eure geschätzte Hilfe bitten, zumal ich mit meinem geringen Latein am Ende bin.
Ich habe einen Code zum Ändern eines Codes gefunden, der auch wie gewünscht alle Tabellenblätter durchläuft und die Änderung vornimmt, bis dann plötzlich als "objCodeModule" "DieseArbeitsmappe" erscheint und dann führt es zu einem gravierenden Excel-Fehler und Excel wird neu gestartet.
Ich dachte ich könnte mit einer Abfrage und überspringen zum Ende eine Lösung finden, aber leider nicht.
Ich vermute es hat was mit Select Case zu tun, aber ich kann auch mit Case=100 auch nichts anfangen.
Kann mir bitte jemand sagen, woran es liegt.
Vielen Dank.
Liebe Grüße aus Innsbruck
Helmut
Code:
Sub Ändern_CB10_Code() ' Die Sub des CB10 in allen TBs ändern
Dim wb As Workbook
Set wb = ActiveWorkbook
prcStart wb
End Sub
Public Sub prcStart(wb As Workbook)
Dim objVBComponents As Object, i As Integer, j As Integer
With wb.VBProject 'alle Tabellen werden aufgerufen
For Each objVBComponents In .VBComponents
Select Case objVBComponents.Type
Case 1 '2, 3 'Module, Klasssenmodule, Userforms
'.VBComponents.Remove .VBComponents(objVBComponents.Name) 'wird für Module etc. verwendet
Case 100 'Workbook, Sheets, Carts
i = 0: j = 0
Call prcFindProc("CommandButton10_Click", objVBComponents.CodeModule, i, j) 'Zu änderndes Modul
'i = ab CommandButton10_Click
If i > 0 And j > 0 Then
Call prcDelete(objVBComponents.CodeModule, i, j) 'Löschen aller Zeilen des Moduls
Call InsertProc(objVBComponents.CodeModule, i)
End If
End Select
Next
End With
End Sub
Public Sub prcFindProc(strProc As String, objCodeModule As Object, intStartLine As Integer, intEndLine As Integer)
Dim intLine As Integer, sLine As String
With objCodeModule 'alle Tabellen werden aufgerufen
'If objCodeModule = "DieseArbeitsmappe" Then
'GoTo Ende
'End If
For intLine = 1 To .CountOfLines
If .ProcOfLine(intLine, 0) = strProc Then
sLine = Trim(.Lines(intLine, 1))
If intStartLine = 0 And InStr(1, sLine, strProc) > 0 And Left(sLine, 1) <> "'" Then
intStartLine = intLine + 1
ElseIf intStartLine > 0 And InStr(1, sLine, "End Sub") = 0 Then
intEndLine = intLine
ElseIf intStartLine > 0 And InStr(1, sLine, "End Sub") > 0 Then
Exit For
End If
End If
Next
intEndLine = intEndLine - intStartLine + 1
End With