Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1724to1728
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Löschen mittels Combobox

Löschen mittels Combobox
04.12.2019 08:04:39
Helmut
Guten Morgen VBA`ler
In Spalte B habe ich rund 100 Namen untereinander stehen, mittels einer Combobox möchte ich mir diese anzeigen lassen, wenn ich jedoch jetzt in der Liste der Combobox zum Beispiel auf den Namen „Huber“ (Zelle B 25) klicke, soll die ganze Zeile 25 gelöscht werden. Ist das irgendwie möglich?
Ich sage jetzt schon recht herzlichen Dank, lg Helmut

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Löschen mittels Combobox
04.12.2019 08:31:17
Stefan
Hallo Helmut,
anbei der ungetestete Code:

Dim lZeile As Long,
lZeile = 2
Do While Trim(CStr(Tabelle2.Cells(lZeile, 2).Value))  ""  'Name der Tabelle ändern
If comboBox1.Text = Trim(CStr(Tabelle2.Cells(lZeile, 2).Value))  Then 'Name der  _
Combobox/Tabelle ändern
Tabelle2.Rows(CStr(lZeile & ":" & lZeile)).delete 'Name der Tabelle ändern
End If
End With
Exit Do
End If
lZeile = lZeile + 1
Loop 

Müsste so aber funktionieren.
Den code musst du noch ins VBA einpflegen (entweder du machst es mit dem AfterUpdate-Ereignis (Wenn du die Combobox verlässt) oder mit einem extra CommandButton)
gruß Stefan
Anzeige
AW: Löschen mittels Combobox
04.12.2019 09:40:55
Helmut
Guten Morgen Stefan
erstmals recht herzlichen Dank das du dich um eine Sache angenommen hast. Doch leider muss ich dir sagen, dass der Code gar nichts macht. Erst habe ich einmal End With und End If löschen müssen-diese hat er mir im Code gleich gelb unterlegt, dann habe ich weder mit After update-Ereignis noch mit einem Extra CommandButton das gewünschte Ergebnis erreicht. Möchte dir jedoch unter diesen Umständen keinen Vorwurf machen, da du mir angemerkt hast, dass der Code und getestet ist.
Somit wäre ich auf weitere Hilfe angewiesen.
Lg Helmut
AW: Löschen mittels Combobox
04.12.2019 09:36:55
Stefan
Hallo nochmal, der vorherige Code war noch der ein oder andere Fehler drin *Shame*
hier der richtige, diesmal hab ichs auch getestet.
Dim lZeile As Long
lZeile = 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 2).Value))  ""  'Name der Tabelle ändern
If ComboBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 2).Value)) Then  'Name der  _
Combobox/Tabelle ändern
Tabelle1.Rows(CStr(lZeile & ":" & lZeile)).Delete 'Name der Tabelle ändern
Exit Do
End If
lZeile = lZeile + 1
Loop
Gruß stefan
Anzeige
AW: Löschen mittels Combobox
04.12.2019 09:45:18
Beverly
Hi Helmut,
ich nehme an, es handelt sich um eine ComboBox auf einem UserForm?
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If ComboBox1.ListIndex > -1 Then Rows(ComboBox1.ListIndex + 2).Delete
End Sub
Ich würde aus Sicherheitsgründen das Doppel-Click-Ereignis verwenden.


AW: Löschen mittels Combobox
04.12.2019 11:14:25
Helmut
Servus Karin
Herzlichen Dank für deine Hilfe, da ich nicht sehr große VBA Kenntnisse habe, nach einigen hin und her habe ich es geschafft. Beim Wortlaut " (Combobox 1.List Index +2). Delete" heißt +2, dass es in der 2. Zeile beginnt-oder?
Was jetzt noch mein Problem ist, wenn ich angenommen 2 Namen hintereinander lösche sagen wir „Huber“ und „Meyer“ dann habe ich immer noch "Huber" Index stehen und er löscht mir anstatt "Meyer" einen Namen unterhalb.
Hier würde ich nach dem 1. löschen eine Aktualisierung des Index brauchen.
Lg Helmut
Anzeige
AW: Löschen mittels Combobox
04.12.2019 13:09:20
Beverly
Hi Helmut,
dazu müsste ich wissen, wie du die ComboBox mit Daten füllst - hast du einen Bereich fest eingetragen oder füllst du sie mit AddItem?


AW: Löschen mittels Combobox
05.12.2019 06:50:32
Helmut
Guten Morgen Karin
Gestern war Mittwoch, da habe ich immer etwas früher Dienstschluss, daher melde ich mich erst heute wieder zurück.
Also ich verstehe wirklich nicht sehr viel von VBA daher kann ich nur sporadische Angaben _ machen. Ich habe jetzt folgende Code:

Private Sub ComboBox1_Click()
If ComboBox1.ListIndex > -1 Then Rows(ComboBox1.ListIndex + 6).Delete
End Sub

Private Sub UserForm_Initialize()
Dim lZeile  As Long
With ThisWorkbook.Worksheets("Abwesenheiten")
For lZeile = 6 To .Cells(.Rows.Count, 2).End(xlUp).Row
ComboBox1.AddItem .Range("B" & lZeile).Value
Next lZeile
End With
End Sub
Ich weiß es nicht, ob der 2. Code die Combobox mit Daten füllt.
Lg Helmut
Anzeige
AW: Löschen mittels Combobox
05.12.2019 08:27:30
Beverly
Hi Helmut,
ja genau so ist es. Du musst also nach dem Löschen der Zeile nur das Initialize-Ereignis noch einml ausführen, um die ComboBox neu zu füllen:

If ComboBox1.ListIndex > -1 Then
Rows(ComboBox1.ListIndex + 6).Delete
ComboBox1.Clear
UserForm_Initialize
End If

Noch etwas Generelles: du verwendest das Change-Ereignis der ComboBox um die Daten zu löschen - was passiert, wenn du aus Versehen den falschen Namen ausgewählt hast? Die Zeile ist unwiderruflich weg. Deshalb hatte ich dir vorgeschlagen, stattdessen aus Sicherheitsgründen das Doppelklick-Ereignis zu verwenden, denn damit wählst du zuerst etwas aus, dann machst du den Doppelklick und ERST DANN wird die Zeile gelöscht - du kannst deine Auswahl also problemlos korrigieren.


Anzeige
AW: Löschen mittels Combobox
05.12.2019 10:59:02
Helmut
Guten Morgen Karin
Also jetzt funktioniert diese Sache so weit bestens, auch nochmals recht herzlichen Dank für den Vorschlag mit dem Doppelklick-Ereignis, habe dieses auch zu Anwendung gebracht.
Ein kurzes Problem habe ich noch: mit der Eingabe eines Namens in eine Textbox und anschließenden betätigen eines Buttons wird der Name in das Tabellenblatt eingetragen. Nun ist es so, dass ich den Button oft bis zu dreimal anklicken muss bis er reagiert. Beim 1. anklicken sehe ich aber schon, dass er irgendwie gedrückt wird jedoch dürfte die Zeitverzögerung eventuell im Code liegen.
Private Sub CommandButton3_Click() ' Sortieren der Mitarbeiter incl. Abteilung
Range("B6:PJ1500").Select
ActiveWorkbook.Worksheets("Abwesenheiten").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Abwesenheiten").Sort.SortFields.Add Key:=Range("B6") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Abwesenheiten").Sort
.SetRange Range("B6:PJ1500")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Columns("D:D").Select 'Blendet Spalte "Abteilung" wieder aus'
Selection.EntireColumn.Hidden = True
ActiveSheet.Range("$B$5:$D$1000").AutoFilter Field:=3
If TextBox2.Value = "" Then MsgBox "Das Namensfeld darf nicht leer bleiben": Exit Sub
Range("A1").Select ' und geht zurück auf "A1"
UserForm2.TextBox1.Value = ""
UserForm2.TextBox2.Value = ""
MsgBox "Mitarbeiter erfolgreich angelegt"
End Sub
Hast du hier eventuell auch noch einmal einen Rat parat?
Besten Dank im Voraus, lg Helmut
Anzeige
Tabelle sortieren
05.12.2019 12:53:29
Beverly
Hi Helmut,
versuche es mal so (ungetestet):
Private Sub CommandButton3_Click() ' Sortieren der Mitarbeiter incl. Abteilung
Application.ScreenUpdating = False
With ActiveWorkbook.Worksheets("Abwesenheiten")
.Range("B6:PJ1500").Sort Key1:=.Range("B6"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers
.Columns("D:D").EntireColumn.Hidden = True 'Blendet Spalte "Abteilung" wieder aus'
.Range("$B$5:$D$1000").AutoFilter Field:=3
If TextBox2.Value  "" Then
UserForm2.TextBox1.Value = ""
UserForm2.TextBox2.Value = ""
MsgBox "Mitarbeiter erfolgreich angelegt"
Else
MsgBox "Das Namensfeld darf nicht leer bleiben"
End If
End With
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Tabelle sortieren
05.12.2019 13:40:11
Helmut
Einen wunderschöne Nachmittag Karin, Servus Torsten
Jetzt muss ich nur noch einen Doppelklick machen und es funktioniert.
Torsten hat mich jedoch jetzt auf eine Idee gebracht, er schreibt, dass im Code keine Codezeile ist, damit Namen in das Tabellenblatt geschrieben werden. Das ist richtig! Ich muss dazu sagen, dass ich damals noch weniger Ahnung von VBA hatte als jetzt und mir sehr viele Codeschnipsel zusammengefügt habe.
Hier möchte ich den Code posten der die Namen bzw. auch die Abteilung in die Zelle bzw ins TB einträgt.
Private Sub TextBox1_AfterUpdate() 'textbox für Mitarbeiter anlegen
If TextBox1  " " Then
Cells(Range("B1500").End(xlUp).Offset(1, 0).Row, 2) = TextBox1
Else
MsgBox "Sie haben keinen Namen eingegeben.", vbInformation
End If
End Sub

Private Sub TextBox2_AfterUpdate() 'Textbox für Abteilung anlegen
If TextBox2  " " Then
Cells(Range("B1500").End(xlUp).Offset(0, 0).Row, 4) = TextBox2
Else
MsgBox "Sie haben keine Abteilung eingegeben.", vbInformation
End If
End Sub
Der Sinn sollte sein, beide Textboxen ausfüllen und nachher mittels den Button (Euer verbesserter Code)alle Zeilen nach Spalte B zu sortieren.
Ich stehe schon tiefe neuer Schuld, trotzdem recht herzlichen Dank für eure großzügige Hilfe.
lg Helmut
Anzeige
AW: Tabelle sortieren
05.12.2019 14:29:15
Beverly
Hi Helmut,
diese beiden Codes tragen die Namen ins Tabellenblatt ein, nachdem die TextBoxeingabe beendet wurde und nicht, wenn du einen Button drückst. Wenn du diese Codes also noch in den vom CommandButton einbauen willst, musst du beide nur an den Anfang gleich nach der Zeile With ActiveWorkbook.Worksheets("Abwesenheiten") setzen. Beachte aber auf jeden Fall, dass du vor Cells/Range den Punkt (.) setzen musst, da er sich ja auf die betreffende Tabelle beziehen soll.


AW: Tabelle sortieren
06.12.2019 10:37:31
Helmut
Einen schönen Vormittag Karin
Auch deine letzten Zeilen haben mich weitergebracht! Dankeschön!
Doch es ist schon wieder ein Problem aufgetaucht: dazu müsste ich jedoch die Datei hochladen-wenn ich sie auf ein Minimum beschränke hat sie trotzdem noch mehr als 3 MB! Also ist hochladen nicht möglich. Gibt es eine Möglichkeit via PN oder ähnlichen?
Besten Dank im voraus, lg Helmut
Anzeige
AW: Tabelle sortieren
06.12.2019 10:59:48
Torsten
hi Helmut,
falls Karin nicht online ist, kannst du mir die Datei per email schicken und ich versuch mich mal dran. Beschreibe dein Problem so genau wie moeglich.
wetzel.torsten@hotmail.com
Gruss Torsten
AW: Tabelle sortieren
06.12.2019 12:30:11
Beverly
Hi Helmut,
meine Mailasdresse findest du auf meiner Homepage im Inpressum.
Du solltest das Problem aber trotzdem hier posten, damit man sich auch andere Helfer einen Eindruck verschaffen können.


AW: Löschen mittels Combobox
05.12.2019 12:54:37
Torsten
Hallo Helmut,
ich kenne deine Datei leider nicht, aber es koennte an der Sortierung liegen, die etwas Zeit braucht.
Ich habe deinen Code mal etwas ueberarbeitet. Teste ihn mal, hoffe alles gut.
Hinweis: Select braucht man zu 99% nicht.

Private Sub CommandButton3_Click() ' Sortieren der Mitarbeiter incl. Abteilung
With ActiveWorkbook.Sheets("Abwesenheiten")
.Range("B6:PJ1500").Select
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("B6"), SortOn:=xlSortOnValues, Order:=xlAscending,  _
DataOption:=xlSortNormal
With .Sort
.SetRange Range("B6:PJ1500")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
.Columns("D:D").EntireColumn.Hidden = True  'Blendet Spalte "Abteilung" wieder aus'
.Range("$B$5:$D$1000").AutoFilter Field:=3
End With
If TextBox2.Value = "" Then MsgBox "Das Namensfeld darf nicht leer bleiben": Exit Sub
Range("A1").Select ' und geht zurück auf "A1"
UserForm2.TextBox1.Value = ""
UserForm2.TextBox2.Value = ""
MsgBox "Mitarbeiter erfolgreich angelegt"
End Sub

Allerdings noch etwas. Du sprichst hier davon, dass ein Name in ein Tabellenblatt uebertragen wird. Aber dafuer gibt es in diesem Code keine Codezeile. Hier wird nichts in irgendeine Zelle geschrieben. Hier wird nur sortiert, Spalte D ausgeblendet und gefiltert.
Gruss Torsten

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige