Ich habe in meinem Projekt eine Userform frm_Suche, bei der die Inhalte vom Sheet "Reiseziele" _ A1:C eingelesen werden.
Private Sub UserForm_Initialize()
''* H. Ziplies *
''* 30.10.10 *
''* erstellt von HajoZiplies@web.de *
''* http://Hajo-Excel.de
''die Sortierung der ListBox wird im Blattmodul "Reiseziele" Worksheet_Deactivate() geregelt
Application.ScreenUpdating = False
With Worksheets("Reiseziele")
' letzte belegte Zeile unabhängig von Excelversion für Spalte A (1)
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, . _
_
Rows.Count)
.Sort.SortFields.Clear
.Sort.SortFields.Add _
Key:=Range("B1:B" & LoLetzte), _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
DataOption:=xlSortNormal
With .Sort
.SetRange Worksheets("Reiseziele").Range("A1:C" & LoLetzte)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Application.ScreenUpdating = True
' Adressbereich der Listbox zuweisen
lst_Zieladresse.RowSource = .name & "!A1:C" & LoLetzte
lst_Zieladresse.ColumnCount = 3 ' Spaltenanzahl der Listbox einstellen
End With
End Sub
In drei Textboxen werden die Listeneinträge bei Klick auf den Eintrag geschrieben.
Private Sub lst_Zieladresse_Change()
If lst_Zieladresse.Tag "" Then Exit Sub
txt_PLZ = lst_Zieladresse.List(lst_Zieladresse.ListIndex, 0)
txt_Ort = lst_Zieladresse.List(lst_Zieladresse.ListIndex, 1)
txt_Strasse = lst_Zieladresse.List(lst_Zieladresse.ListIndex, 2)
End Sub
und mit
Private Sub btn_Add_Click()
Dim lngEmptRow As Long
Dim i As Integer
With Sheets("Reiseziele")
lngEmptRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(lngEmptRow, 1).Value = txt_PLZ.Text
.Cells(lngEmptRow, 2).Value = txt_Ort.Text
.Cells(lngEmptRow, 3).Value = txt_Strasse.Text
End With
txt_PLZ = "" 'löscht Textboxen
txt_Ort = ""
txt_Strasse = ""
i = Sheets("Reiseziele").UsedRange.Rows.Count
With frm_Suche.lst_Zieladresse
.ColumnCount = 3
.ColumnHeads = False
.RowSource = "Reiseziele!A1:C" & i
.ColumnWidths = "3cm;3cm;3cm"
End With
End Sub
wieder in die Tabelle zurück geschrieben, wenn ich den Button btn_Add drücke.Nun möchte ich den vorhandenen Eintrag in den Textboxen ändern und die Änderung zurückschreiben, ohne das der Wert doppelt erscheint (also nur überschreiben). Der neue Wert wird hinzugefügt.
Wie kann ich den selektierten Wert(e) überschreiben?
Bis jetzt schreibt mein Code nur die Werte in die Tabelle und aktualisiert die ListBox und es kommen "doppelte Werte" darin vor.
LG
Peer