Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Userform Listbox Suche PLZ / Ort
#1
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


.xlsm   PLZ zu Ort Suchen.xlsm (Größe: 742,09 KB / Downloads: 11)
Antworten Top
#2
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?
Antworten Top
#3
Hallo Steve,
Private Sub Eintragen_Click()
With Lst_Postleitzahlen
ActiveCell.Value = .List(.ListIndex, 1) & " " & .List(.ListIndex, 0)
End With
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • tyr0n
Antworten Top
#4
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:
  • tyr0n
Antworten Top
#5
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


Angehängte Dateien
.xlsb   __PLZ zu Ort snb.xlsb (Größe: 447,87 KB / Downloads: 4)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • tyr0n
Antworten Top
#6
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
Antworten Top
#7
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:
  • tyr0n
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste