Herbers Excel-Forum - das Archiv
Teil einer Zeile löschen
Informationen und Beispiele zu den hier genannten Dialog-Elementen:
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
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..
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
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