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, 10:33 (Dieser Beitrag wurde zuletzt bearbeitet: 22.12.2020, 10: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, 10:49 (Dieser Beitrag wurde zuletzt bearbeitet: 22.12.2020, 11: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, 19:47 (Dieser Beitrag wurde zuletzt bearbeitet: 22.12.2020, 19:47 von Kuwer.)
Hallo Steve,
(22.12.2020, 16: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