Mit VBA Zellen löschen

Hallo liebe Leute,

Ich versuche durch einen Klick auf einen Button Einträge in bestimmten Tabellenzellen zu löschen.
Allerdings funktioniert das nicht ganz:

Private Sub ClearEntries_Click()
If Sheets(2).Range(„D1“) „“ Then
Sheets(2).Range(„D1“).Delete
Sheets(2).Range(„D2“).Delete
Sheets(2).Range(„J2“).Delete
Sheets(2).Range(„B7:B26“).Delete
Sheets(2).Range(„D7:smiley:26“).Delete
Sheets(2).Range(„H7:H26“).Delete
Sheets(2).Range(„J7:J26“).Delete
End If
If Sheets(3).Range(„D1“) „“ Then
Sheets(3).Range(„D1“).Delete
Sheets(3).Range(„D2“).Delete
Sheets(3).Range(„J2“).Delete
Sheets(3).Range(„B7:B46“).Delete
Sheets(3).Range(„D7:smiley:46“).Delete
Sheets(3).Range(„I7:I46“).Delete
Sheets(3).Range(„K7:K46“).Delete
End If
If Sheets(4).Range(„D1“) „“ Then
Sheets(4).Range(„D1“).Delete
Sheets(4).Range(„D2“).Delete
Sheets(4).Range(„J2“).Delete
Sheets(4).Range(„B7:B66“).Delete
Sheets(4).Range(„D7:smiley:66“).Delete
Sheets(4).Range(„I7:I66“).Delete
Sheets(4).Range(„K7:K66“).Delete
End If

End Sub

Ich würde mich freuen, wenn ihr euch diese kleine Sub mal anschaun könntet und mir sagen könntet, was daran falsch ist - ich kenne mich nämlich mit VBA nicht so wirklich gut aus…

LG
Marie

Hallo liebe Leute,

Ich versuche durch einen Klick auf einen Button Einträge in
bestimmten Tabellenzellen zu löschen.
Allerdings funktioniert das nicht ganz:

Private Sub ClearEntries_Click()
If Sheets(2).Range(„D1“) „“ Then
Sheets(2).Range(„D1“).Delete
Sheets(2).Range(„D2“).Delete
Sheets(2).Range(„J2“).Delete
Sheets(2).Range(„B7:B26“).Delete
Sheets(2).Range(„D7:smiley:26“).Delete
Sheets(2).Range(„H7:H26“).Delete
Sheets(2).Range(„J7:J26“).Delete
End If
If Sheets(3).Range(„D1“) „“ Then
Sheets(3).Range(„D1“).Delete
Sheets(3).Range(„D2“).Delete
Sheets(3).Range(„J2“).Delete
Sheets(3).Range(„B7:B46“).Delete
Sheets(3).Range(„D7:smiley:46“).Delete
Sheets(3).Range(„I7:I46“).Delete
Sheets(3).Range(„K7:K46“).Delete
End If
If Sheets(4).Range(„D1“) „“ Then
Sheets(4).Range(„D1“).Delete
Sheets(4).Range(„D2“).Delete
Sheets(4).Range(„J2“).Delete
Sheets(4).Range(„B7:B66“).Delete
Sheets(4).Range(„D7:smiley:66“).Delete
Sheets(4).Range(„I7:I66“).Delete
Sheets(4).Range(„K7:K66“).Delete
End If

End Sub

Ich würde mich freuen, wenn ihr euch diese kleine Sub mal
anschaun könntet und mir sagen könntet, was daran falsch ist -
ich kenne mich nämlich mit VBA nicht so wirklich gut aus…

Hallo,
sicherlich möchtest Du die Inhalte der Zellen löschen also leeren und nicht die Zellen selbst löschen.
Mit „Delete“ löscht du die Zellen komplett aus dem Arbeitsblatt, d.h. wie beim manuellen Löschen (Bearbeiten->Zellen löschen…) rücken die verbleibenden Zellen nach oben oder links. Damit verändern sich die Adressen der anderen Zellen auf dem Blatt und die Adressierung im VBA-Code stimmt nicht mehr.
Um einen Inhalt zu löschen musst Du den Befehl „ClearContents“ verwenden. Dieser entspricht dem Menüaufruf Bearbeiten->Löschen->Inhalte oder dem Drücken der Entf-Taste.

Dein Code müsste also so aussehen:stuck_out_tongue:rivate Sub ClearEntries_Click()
If Sheets(2).Range(„D1“) „“ Then
Sheets(2).Range(„D1“).ClearContents
Sheets(2).Range(„D2“).ClearContents
Sheets(2).Range(„J2“).ClearContents
Sheets(2).Range(„B7:B26“).ClearContents
Sheets(2).Range(„D7:smiley:26“).ClearContents
Sheets(2).Range(„H7:H26“).ClearContents
Sheets(2).Range(„J7:J26“).ClearContents
End If
If Sheets(3).Range(„D1“) „“ Then
Sheets(3).Range(„D1“).ClearContents
Sheets(3).Range(„D2“).ClearContents
Sheets(3).Range(„J2“).ClearContents
Sheets(3).Range(„B7:B46“).ClearContents
Sheets(3).Range(„D7:smiley:46“).ClearContents
Sheets(3).Range(„I7:I46“).ClearContents
Sheets(3).Range(„K7:K46“).ClearContents
End If
If Sheets(4).Range(„D1“) „“ Then
Sheets(4).Range(„D1“).ClearContents
Sheets(4).Range(„D2“).ClearContents
Sheets(4).Range(„J2“).ClearContents
Sheets(4).Range(„B7:B66“).ClearContents
Sheets(4).Range(„D7:smiley:66“).ClearContents
Sheets(4).Range(„I7:I66“).ClearContents
Sheets(4).Range(„K7:K66“).ClearContents
End If

End Sub

Das kann man aber auch extrem verkürzen:

Private Sub ClearEntries\_Click()
Dim LöschBereich As String
 If Sheets(2).Range("D1") "" Then
 LöschBereich = "D1,D2,J2,B7:B26,D7:smiley:26,H7:H26,J7:J26"
 Sheets(2).Range(LöschBereich).ClearContents
 End If
 If Sheets(3).Range("D1") "" Then
 LöschBereich = "D1,D2,J2,B7:B46,D7:smiley:46,I7:I46,K7:K26"
 Sheets(3).Range(LöschBereich).ClearContents
 End If
 If Sheets(4).Range("D1") "" Then
 LöschBereich = "D1,D2,J2,B7:B66,D7:smiley:66,I7:I66,K7:K66"
 Sheets(4).Range(LöschBereich).ClearContents
 End If
End Sub

Ich hoffe geholfen zu haben.
Viele Grüße, tester