Hallo Community,
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?
Besten Dank im Voraus und viele Grüße
Steve
[
attachment=35990]
Guten Morgen, ich noch einmal :)
Eventuell noch eine kurze Anmerkung. Das Script von Hajo füllt nach einem Change in der Textbox die ListBox mit:
' Ort eintragen
Lst_Postleitzahlen.AddItem .Cells(LoI, 1)
' Postleitzahl eintragen
Lst_Postleitzahlen.List(LoZeile, 1) = .Cells(LoI, 2)
Den Ort bekomme ich mit
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?
Hallo Steve,
Private Sub Eintragen_Click()
With Lst_Postleitzahlen
ActiveCell.Value = .List(.ListIndex, 1) & " " & .List(.ListIndex, 0)
End With
End Sub
Gruß Uwe
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
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
Hallo Kuwer,
besten Dank! Das hat geholfen. Nun weiss ich auch das ich zukünftig ein With Lst_Postleitzahlen benötige!
Auch an die anderen vielen Dank! Ich schaue mir die anderen Lösungenwege ebenfalls noch einmal an!
Viele Grüße Steve
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