Herbers Excel-Forum - das Archiv

Teil einer Zeile löschen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Teil einer Zeile löschen
von: Ben

Geschrieben am: 13.12.2006 15:13:11
Hallo,
Ich habe ein vermutlich relativ triviales Problem:
Ich möchte den Usern meiner Excel-Datei auf jede Zeile der Tabelle eine Schaltfläche "Zeile löschen" stellen. Nach Betätigung dieser Schaltfläche werden die Zellen A bis P der Zeile gelöscht.
Wie muss der Code aussehen, damit man nicht beim Code jeder Schaltfläche die Zeilennummer angebeen muss?
Vielen Dank für Eure Mithilfe und Gruss
Ben
Bild

Betrifft: AW: Teil einer Zeile löschen
von: Reinhard

Geschrieben am: 13.12.2006 15:27:48
Hi Ben,
warum stellst du ihnen nicht einen Button zu verfügen, "Löschen der Spalten A-P der aktiven zeile" o.ä.
Nach deiner Idee, Schaltflächen aus "Formular" erhalten alle das gleiche Makro:
Option Explicit
Sub tt()
Dim zei As Long
zei = 1
While (Cells(zei, 1).Top < ActiveSheet.Shapes(Application.Caller).Top)
zei = zei + 1
Wend
Range("A" & zei - 1 & ":P" & zei - 1).ClearContents
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Bild

Betrifft: AW: Teil einer Zeile löschen
von: Matthias G
Geschrieben am: 13.12.2006 15:29:14
Hallo Ben,
vorausgesetzt, es sind Schaltflächen aus der Formular-Symbolleiste:
Sub loeschen()
Dim z As Long
z = ActiveSheet.Buttons(Application.Caller).TopLeftCell.Row
Range(Cells(z, 1), Cells(z, 16)).ClearContents
End Sub

Gruß Matthias
Bild

Betrifft: AW: Teil einer Zeile löschen
von: Ben

Geschrieben am: 14.12.2006 09:10:12
Hallo Matthias
Dein Code funktioniert in der Testdatei bestens. In meiner eigentlichen Datei habe ich jedoch Kombinationsfelder drin (Steuerelemente), damit die User vordefinierte Einträge haben, aber auch manuelle Eingaben machen können, falls keine der Vorgaben zutrifft. Der Inhalt dieser Kombinationsfelder wird nicht gelöscht bzw. erst beim zweiten mal betätigen der Schaltfläche löschen. Den Kombinationsfeldern habe ich auch noch Makros zugeordnet, z.B.
Private Sub ComboBox31_Change()
If ComboBox31.Value = "BS" Then
ActiveSheet.Range("O7") = "OK"
End If
End Sub

Dies wiederum recht "läppisch" pro Zeile und nicht mit einer Schleife. Dazu 2 Rückfragen:
1. Wie könnte man das realisieren, ohne jeweils die Zeilennummer anzugeben?
2. Liegts an der Wenn-Bedingung, dass beim ersten mal Löschen nicht auch der Eintrag im Kombinationsfeld gelöscht wird.
Gruss
Ben
 Bild