eine weitere Sache bei der ich nicht weiterkomme. Ich nutze schon seit langem das Script von Hajo welches mir zu einem gesuchten Ort die PLZ in einer Userform anzeigt. Nun gibt es nichts komfortableres als die PLZ und den Ort aus dieser Listbox direkt in die aktive Zeile zu schreiben. Da diese Listbox 2 Columns hat, weiß ich leider nur wie ich den Ort ausgeben kann, die PLZ bekomme ich nicht übermittelt. Könnte sich das jemand anschauen?
Private Sub Lst_Postleitzahlen_Click() ActiveCell.Value = Lst_Postleitzahlen.Value End Sub
Jetzt benötige ich nur noch den Value der sich daneben befindet. Das ist wohl in der .Cells(LoI, 2) versteckt. Kann ich den Inhalt aus .Cell(LoI, 2) irgendwie zwischenspeichern um diesen unter Private Sub Lst_Postleitzahlen_Click() verwenden zu können?
22.12.2020, 11:33 (Dieser Beitrag wurde zuletzt bearbeitet: 22.12.2020, 11:50 von Elex.)
Hi
Du könntest mal die Code Alternative versuchen.
In das Blattmodul von "Eingabe"
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column = 2 Then frm_Suche.Show Cancel = True End If End Sub
In das Blattmodul der UserForm.
Code:
Option Explicit Dim Werte As Variant
Private Sub UserForm_Activate() Werte = Sheets("plzdaten").Range("A1").CurrentRegion End Sub
Private Sub Eintragen_Click() If Lst_Postleitzahlen.ListIndex < 0 Then MsgBox "Es ist kein Wert in der Liste Markiert." Else ActiveCell.Value = Lst_Postleitzahlen.List(Lst_Postleitzahlen.ListIndex, 0) ActiveCell.Offset(, 1).Value = Lst_Postleitzahlen.List(Lst_Postleitzahlen.ListIndex, 1) Unload Me End If End Sub
Private Sub Txt_Ort_Change() Dim w As Variant Lst_Postleitzahlen.Clear If Txt_Ort <> "" Then For w = 2 To UBound(Werte, 1) If InStr(1, Werte(w, 1), Txt_Ort.Text, vbTextCompare) = 1 Then Lst_Postleitzahlen.AddItem "a" Lst_Postleitzahlen.List(Lst_Postleitzahlen.ListCount - 1, 0) = Werte(w, 1) Lst_Postleitzahlen.List(Lst_Postleitzahlen.ListCount - 1, 1) = Werte(w, 2) End If Next w End If End Sub
Und die ColumnCount-Eigenschaft der Listbox auf 2 stellen.
Gruß Elex
Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:1 Nutzer sagt Danke an Elex für diesen Beitrag 28 • tyr0n
22.12.2020, 11:49 (Dieser Beitrag wurde zuletzt bearbeitet: 22.12.2020, 12:18 von snb.)
Und verbessere:
Statt
Code:
Private Sub UserForm_Initialize() Dim strAdr As String With Worksheets("plzdaten") ' letzte belegte Zeile unabhängig von Excelversion für Spalte A (1) LoLetzte = IIf(IsEmpty(Worksheets("plzDaten").Cells(.Rows.Count, 1)), _ Worksheets("plzDaten").Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) ' Adressbereich der Listbox zuweisen strAdr = "plzDaten!" & "A2:b" & LoLetzte Lst_Postleitzahlen.RowSource = strAdr Lst_Postleitzahlen.ColumnCount = 2 ' Spaltenanzahl der Listbox einstellen End With End Sub
reicht
Code:
Private Sub UserForm_Initialize() Lst_Postleitzahlen.List=Tabelle1.cells(1).currentregion.value End Sub
Die Eigenschaft columncount sollte im Design Mode erstellt werden müssen.
Und Eintragen so:
Code:
Private Sub Eintragen_Click() ActiveCell.Resize(, 2) = Application.Index(Lst_Postleitzahlen.List, Lst_Postleitzahlen.ListIndex) End Sub
22.12.2020, 20:47 (Dieser Beitrag wurde zuletzt bearbeitet: 22.12.2020, 20:47 von Kuwer.)
Hallo Steve,
(22.12.2020, 17:55)tyr0n schrieb: Nun weiss ich auch das ich zukünftig ein With Lst_Postleitzahlen benötige!
das ist nicht zwingend erforderlich, macht es aber erheblich übersichtlicher.
Code:
Private Sub Eintragen_Click() ActiveCell.Value = Lst_Postleitzahlen.List(Lst_Postleitzahlen.ListIndex, 1) & " " & Lst_Postleitzahlen.List(Lst_Postleitzahlen.ListIndex, 0) End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • tyr0n