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