Nachfolgend ist das Code-Snippet, das hilft, den Kontext des Problems zu verstehen. Wenn nicht (r ist nichts) Bedingung ist, dann bekomme ich 1004 Fehler. Das Besondere ist, wenn ich den Code im Debug-Modus Schritt für Schritt ausführen, dann tritt der Fehler jedes Mal auf, wenn die Bedingung erfüllt ist. Bitte helfen Sie mir, diesen Fehler zu beheben. Vielen Dank.1004 Anwendung definiert oder objektdefinierter Fehler bei Verwendung der Eigenschaft specialcells
With wb.Sheets(csht)
lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
firstCol = 1
'If IsEmpty(.Cells(1, 1).Value) Then firstCol = .Cells(1, 1).End(xlToRight).Column
End With
'countCol = lastCol - firstCol + 1
On Error Resume Next
If firstCol < lastCol Then
Set r = wb.Sheets(csht).Range(wb.Sheets(csht).Cells(1, firstCol), wb.Sheets(csht).Cells(1, lastCol)).SpecialCells(xlCellTypeBlanks)
Else
Set r = wb.Sheets(csht).Range(wb.Sheets(csht).Cells(1, firstCol), wb.Sheets(csht).Cells(1, firstCol)).SpecialCells(xlCellTypeBlanks)
End If
Err.Clear
On Error GoTo 0
If Not (r Is Nothing) Then
'On Error Resume Next
With wb.Sheets(csht)
If firstCol < lastCol Then
.Range(.Cells(1, firstCol), .Cells(1, lastCol)).SpecialCells(xlCellTypeBlanks).EntireColumn.Delete
Else
.Range(.Cells(1, firstCol), .Cells(1, firstCol)).SpecialCells(xlCellTypeBlanks).EntireColumn.Delete
End If
End With
'Err.Clear
'On Error GoTo 0
End If
Das sieht nicht rechts: '.Range (.Cells (1, FirstCol), .Cells (1, FirstCol)) 'Sollte nicht einer von ihnen' lastCol' sein? – Rory
Diese Anweisung wird ausgeführt, wenn firstCol = lastCol. Ich bekam einen Bereich Überlappungsfehler in dieser Situation. Sonst ist Bedingung eingefügt. Der Code dort ist tatsächlich '.Cells (1, firstCol)' (ein Fehler im Code gebucht). Bitte ignorieren Sie es als die meiste Zeit firstCol < LastCol in diesem Zusammenhang. – sadhana
Wenn Sie 'SpecialCells' in einem Ein-Zellen-Bereich verwenden, gilt es tatsächlich für das gesamte Arbeitsblatt - ich glaube nicht, dass Sie das wollen! – Rory