(23.03.2024, 14:37)Kuwer schrieb: Hallo,
jetzt ohne Fehlermeldung (hoffentlich):
Die Quellmappe mit dem zu kopierenden Blatt muss beim Start des Makros aktiv sein.
Ansonsten folgende Zeile löschen oder auskommentieren:
Gruß, Uwe
Oha, was passiert hier? 😂 Sorry, Kuwer, ist sehr lieb, aber ich glaube, das schießt über das Ziel hinaus. Die Fehler (leere Zellen) entsteht ja auch, wenn man die Tabelle normal nutzt und mal was löscht oder so, darum bringt eine Kombination da nichts. Ich hab jetzt versucht, den Inhalt des ersten Codes von dir mit dem zu kombinieren, der Fehler bleibt aber der gleiche. Ich erhalte Laufzeitfehler 5 in der Zeile
" lngPoE = InStr(lngPoA, strF, "]") "
Meine Güte, bin ich blöd. Er bringt mir diesen Fehler, wenn es keine Zellen mehr zu reparieren gibt... Ich such mich dusselig, weil ich denke, dass hier irgendwas nicht stimmt...
Jetzetle! Hab hier was zusammengewürfelt, ihr werdet sicher lachen, aber egal, es funktioniert jetzt 😂 Ich hab noch Meldungen angehängt bei Erfolg und Misserfolg, weil mich das so dermaßen verwirrt hat (dachte, der Code hat aufeinmal einen Fehler?!) und dann noch das Tabellenblatt gewechselt. War mir nicht sicher, wie der Code ausgeführt wird, wenn kein Tabellenblatt definiert ist und ich von einem anderen Blatt ausführe... garnicht^^ Aber so geht es jetzt zumindest:
Die Erfolgsmeldung habe ich doppelt gemoppelt, weil ich mir nicht sicher war, wann sie funktioniert. Weil hier auch bei einem Erfolg eine Fehlernummer ausgegeben wird... Keine Ahnung, wie das sein müsste...
Code:
Sub Kopierfehler_beheben_Modul4()
Dim rngB As Range
Dim strF As String
Dim lngPoA As Long, lngPoE As Long
On Error GoTo ErrorHandler
Set rngB = Worksheets("Kalender").Range("G12:V389")
strF = rngB.SpecialCells(xlCellTypeFormulas).Cells(1).Formula
If Len(strF) Then
lngPoA = InStr(1, strF, "[")
lngPoE = InStr(lngPoA, strF, "]")
If lngPoA * lngPoE Then
strF = Mid(strF, lngPoA, lngPoE - lngPoA + 1)
rngB.Replace What:=strF, Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
End If
End If
rngB.SpecialCells(xlCellTypeFormulas).Cells(1).Copy
rngB.SpecialCells(xlCellTypeBlanks).PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
MsgBox "Abgeschlossen." & vbNewLine & "Alle Kopierfehler wurden erfolgreich korrigiert.", vbInformation, "Erfolg"
ExitProcedure:
On Error Resume Next
Exit Sub
ErrorHandler:
Select Case Err.Number
Case 5
MsgBox "Es wurden keine weiteren Kopierfehler erkannt.", vbInformation, "Hinweis"
Case 1004
MsgBox "Abgeschlossen! Alle Kopierfehler wurden erfolgreich korrigiert.", vbInformation, "Erfolg"
End Select
Resume ExitProcedure
End Sub
Aber: Ich könnte ja das automatische Kopieren trotzdem nutzen! Es wäre ziemlich genial, wenn man einen "Export" und einen "Import"-Knopf hätte, der den Bereich automatisch in die Zwischenablage kopiert und man mit dem anderen das dann importiert... Uuuuh... Es artet schonwieder aus, liegt bestimmt an dem Liter Kaffee.