Supportnet / Forum / Tabellenkalkulation
VBA - Eintrag aus Combobox entfernen
Frage
Hallo @all,
um unsere IP-Adressen zu verwalten, habe ich je ein Tabellenblatt "Freie IP" und "vergeben"angelegt. Per Userform und einer Combobox werden die freien IP´s angezeigt .
Nach Klick in der Combobox wird die selectierte IP in das Tabellenblatt "Vergeben" kopiert und die vergebene IP aus dem Tabellenblatt "Freie IP" gelöscht. Die vergebene IP wird aber noch in der Combobox angezeigt. Es sei denn, ich schließe die Userform und öffne sie nach jedem Eintrag erneut.
Wie kann ich es machen, dass die vergebene IP nicht mehr in der Combobox angezeigt wird (ohne die Userform zu schließen und anschließend wieder zu öffnen) ?
Die freien IP´s werden aber nicht in Reihenfolge vergeben.
Hoffentlich habe ich mich einigermaßen verständlich ausgedrückt.....
MfG
brumm
Antwort 1 von JoeKe
Hi brumm,
nach der Durchführung deiner Aktionen setzt der Befehl:
ComboBox1="" deine ComcoBox zurück.
ComboBox1 mus durch den Namen deiner Box ersetzt werden.
MfG
JöKe
nach der Durchführung deiner Aktionen setzt der Befehl:
ComboBox1="" deine ComcoBox zurück.
ComboBox1 mus durch den Namen deiner Box ersetzt werden.
MfG
JöKe
Antwort 2 von brumm
Hallo Jöke,
vielen Dank für Deine schnelle Antwort.
Das sichtbare "Fenster" in der Combobox wird zwar geleert, doch der gelöschte Wert bleibt trotzdem in der Combobox erhalten.
Das Tabellenblatt "vergeben" muss wahrscheinlich neu eingelesen werden, damit es nicht mehr in der Combobox erscheint....aber wie?
MfG
brumm
vielen Dank für Deine schnelle Antwort.
Das sichtbare "Fenster" in der Combobox wird zwar geleert, doch der gelöschte Wert bleibt trotzdem in der Combobox erhalten.
Das Tabellenblatt "vergeben" muss wahrscheinlich neu eingelesen werden, damit es nicht mehr in der Combobox erscheint....aber wie?
MfG
brumm
Antwort 3 von JoeKe
Hi brumm,
kanst du eventuell den Code den du zum kopieren und löschen verwendest hier mal posten? Damit läst sich sicherlich leichter entscheiden, wie dir zu helfen ist.
MfG
JöKe
kanst du eventuell den Code den du zum kopieren und löschen verwendest hier mal posten? Damit läst sich sicherlich leichter entscheiden, wie dir zu helfen ist.
MfG
JöKe
Antwort 4 von brumm
Hi Jöke,
folgender Code:
Private Sub CommandButton1_Click()
´Daten aus Userform in Tabellenblatt "Lager PC" schreiben
Set frm = UserForm1
Sheets("Lager PC").Activate
Range("A65536").End(xlUp).Offset(0, 0).Select ´0,0 = Zeile 2, Spalte1
With frm
ActiveCell.Offset(1, 0).Value = ComboBox1.Value
End With
´Vergebene IP in Spalte "vergeben" schreiben
Sheets("Freie IP").Activate
Range("K65536").End(xlUp).Offset(1, 0).Select
ActiveCell.Offset(0, 0).Value = ComboBox1.Value ´IP
´Vergebene IP in Spalte "Frei" löschen
´Löschen von doppelten IP in 2 verschiedenen Spalten
Dim frei As Range, vergeben As Range
For Each vergeben In [k2:k100]
For Each frei In [e2:e100]
If InStr(1, frei, vergeben) > 0 And vergeben <> "" Then frei.ClearContents
Next frei
Next vergeben
End Sub
Für die Aktivierung der Combobox wird folgender Code benutzt:
Private Sub UserForm_Initialize()
´Daten aus Tabellenblatt "Freie IP" in Combobox einlesen
Dim c As Range
For Each c In Sheets("Freie IP").Range("E3:E100")
ComboBox1.AddItem c
Next c
End Sub
MfG
Hans
folgender Code:
Private Sub CommandButton1_Click()
´Daten aus Userform in Tabellenblatt "Lager PC" schreiben
Set frm = UserForm1
Sheets("Lager PC").Activate
Range("A65536").End(xlUp).Offset(0, 0).Select ´0,0 = Zeile 2, Spalte1
With frm
ActiveCell.Offset(1, 0).Value = ComboBox1.Value
End With
´Vergebene IP in Spalte "vergeben" schreiben
Sheets("Freie IP").Activate
Range("K65536").End(xlUp).Offset(1, 0).Select
ActiveCell.Offset(0, 0).Value = ComboBox1.Value ´IP
´Vergebene IP in Spalte "Frei" löschen
´Löschen von doppelten IP in 2 verschiedenen Spalten
Dim frei As Range, vergeben As Range
For Each vergeben In [k2:k100]
For Each frei In [e2:e100]
If InStr(1, frei, vergeben) > 0 And vergeben <> "" Then frei.ClearContents
Next frei
Next vergeben
End Sub
Für die Aktivierung der Combobox wird folgender Code benutzt:
Private Sub UserForm_Initialize()
´Daten aus Tabellenblatt "Freie IP" in Combobox einlesen
Dim c As Range
For Each c In Sheets("Freie IP").Range("E3:E100")
ComboBox1.AddItem c
Next c
End Sub
MfG
Hans
Antwort 5 von brumm
Hi @ll,
vielleicht habe ich mich unverständlich ausgedrückt.
Wenn der Wert aus der Tabelle "freie IP" gelöscht ist, wird der Wert noch in der Combobox angezeigt.
Der Code "Combobox1 = "" " entfernt den Wert nur aus dem Anzeigefeld, nicht aber aus der heruntergeklappten Liste in der Combobox.
Meines Erachtens müssen die Werte aus der Tabelle "Freie IP" neu eingelesen werden, um die noch vorhandenen freien IP´s anzuzeigen.
Vielleicht kann mir ja doch jemand helfen....
Mfg
Hans
vielleicht habe ich mich unverständlich ausgedrückt.
Wenn der Wert aus der Tabelle "freie IP" gelöscht ist, wird der Wert noch in der Combobox angezeigt.
Der Code "Combobox1 = "" " entfernt den Wert nur aus dem Anzeigefeld, nicht aber aus der heruntergeklappten Liste in der Combobox.
Meines Erachtens müssen die Werte aus der Tabelle "Freie IP" neu eingelesen werden, um die noch vorhandenen freien IP´s anzuzeigen.
Vielleicht kann mir ja doch jemand helfen....
Mfg
Hans
Antwort 6 von Event
Hallo
Combobox1.clear
UserForm_Initialize()
Gruß
Combobox1.clear
UserForm_Initialize()
Gruß
Antwort 7 von Event
Private Sub CommandButton1_Click()
´Daten aus Userform in Tabellenblatt "Lager PC" schreiben
Set frm = UserForm1
Sheets("Lager PC").Activate
Range("A65536").End(xlUp).Offset(0, 0).Select ´0,0 = Zeile 2, Spalte1
With frm
ActiveCell.Offset(1, 0).Value = ComboBox1.Value
End With
´Vergebene IP in Spalte "vergeben" schreiben
Sheets("Freie IP").Activate
Range("K65536").End(xlUp).Offset(1, 0).Select
ActiveCell.Offset(0, 0).Value = ComboBox1.Value ´IP
´Vergebene IP in Spalte "Frei" löschen
´Löschen von doppelten IP in 2 verschiedenen Spalten
Dim frei As Range, vergeben As Range
For Each vergeben In [k2:k100]
For Each frei In [e2:e100]
If InStr(1, frei, vergeben) > 0 And vergeben <> "" Then frei.ClearContents
Next frei
Next vergeben
Combobox1.clear
UserForm_Initialize()
End Sub
Für die Aktivierung der Combobox wird folgender Code benutzt:
Private Sub UserForm_Initialize()
´Daten aus Tabellenblatt "Freie IP" in Combobox einlesen
Dim c As Range
For Each c In Sheets("Freie IP").Range("E3:E100")
ComboBox1.AddItem c
Next c
End Sub
´Daten aus Userform in Tabellenblatt "Lager PC" schreiben
Set frm = UserForm1
Sheets("Lager PC").Activate
Range("A65536").End(xlUp).Offset(0, 0).Select ´0,0 = Zeile 2, Spalte1
With frm
ActiveCell.Offset(1, 0).Value = ComboBox1.Value
End With
´Vergebene IP in Spalte "vergeben" schreiben
Sheets("Freie IP").Activate
Range("K65536").End(xlUp).Offset(1, 0).Select
ActiveCell.Offset(0, 0).Value = ComboBox1.Value ´IP
´Vergebene IP in Spalte "Frei" löschen
´Löschen von doppelten IP in 2 verschiedenen Spalten
Dim frei As Range, vergeben As Range
For Each vergeben In [k2:k100]
For Each frei In [e2:e100]
If InStr(1, frei, vergeben) > 0 And vergeben <> "" Then frei.ClearContents
Next frei
Next vergeben
Combobox1.clear
UserForm_Initialize()
End Sub
Für die Aktivierung der Combobox wird folgender Code benutzt:
Private Sub UserForm_Initialize()
´Daten aus Tabellenblatt "Freie IP" in Combobox einlesen
Dim c As Range
For Each c In Sheets("Freie IP").Range("E3:E100")
ComboBox1.AddItem c
Next c
End Sub
Antwort 8 von Event
einen hab ich noch:
Option Explicit
Private Sub CommandButton1_Click()
´Daten aus Userform in Tabellenblatt "Lager PC" schreiben
Dim frm
Set frm = UserForm1
Sheets("Lager PC").Activate
Range("A65536").End(xlUp).Offset(0, 0).Select
´0,0 = Zeile 2, Spalte1
With frm
ActiveCell.Offset(1, 0).Value = ComboBox1.Value
End With
´Vergebene IP in Spalte "vergeben" schreiben
Sheets("Freie IP").Activate
Range("K65536").End(xlUp).Offset(1, 0).Select
ActiveCell.Offset(0, 0).Value = ComboBox1.Value ´IP
´Vergebene IP in Spalte "Frei" löschen
´Löschen von doppelten IP in 2 verschiedenen Spalten
Dim frei As Range, vergeben As Range
For Each vergeben In [k2:k100]
For Each frei In [e2:e100]
If InStr(1, frei, vergeben) > 0 And vergeben <> "" Then frei.ClearContents
Next frei
Next vergeben
Application.ScreenUpdating = False
ComboBox1.Clear
Call UserForm_Initialize
Application.ScreenUpdating = True
End Sub
´Für die Aktivierung der Combobox wird folgender Code benutzt:
Private Sub UserForm_Initialize()
´Daten aus Tabellenblatt "Freie IP" in Combobox einlesen
Dim c&
For c = 3 To Sheets("Freie IP").Range("E65535").End(xlUp).Row
If Cells(c, 5).Value > "" Then ComboBox1.AddItem Cells(c, 5).Value
Next c
End Sub
Antwort 9 von brumm
Hallo Event,
vielen Dank für Deine Mühe. Du hast mir sehr geholfen.
Spitze, der letzte Code(8) klappt wunderbar.
@Jöke:
Auch Dir nochmal vielen Dank
MfG
Hans
vielen Dank für Deine Mühe. Du hast mir sehr geholfen.
Spitze, der letzte Code(8) klappt wunderbar.
@Jöke:
Auch Dir nochmal vielen Dank
MfG
Hans