Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1620to1624
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA_Listbox_Ausgabe/Zeilensprung

VBA_Listbox_Ausgabe/Zeilensprung
23.04.2018 09:23:06
ChrisJeh
Userbild
Hallo liebe VBA-Gemeinde,
ich habe ein Makro geschrieben, welches aus einer Liste von unzähligen Daten, nach Eingabe von mind. 3 Zahlen mehrere Treffer in einer Listbox auflistet.
Als nächstes wollte ich - wenn man einen Treffer in der Zeile mit doppelklickt anklickt, dass Excel zu dieser Zelle/Spalte springt.
Leider funktioniert es nicht so wie ich das will - bzw. gibt er mir einen Fehler aus "End With ohne With". Habe leider keine guten VBA Kenntnisse.
Kann mir da jemand helfen?
---------------------------------------------------------------------------------
2)Des Weiteren will ich meine Tabellenköpfe farbig gestalten - habe es bisher nur so hinbekommen, dass nach der Eingabe im Makro alle Farben gelöscht werden um eben die jeweiligen Treffer zu markieren. Kann VBA irgendwie mit 2 Farben arbeiten, dass das ganze Tabellenblatt nicht weiß ist/wird?

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zur Fehlermeldung
23.04.2018 09:35:30
hary
Moin
"wenn man einen Treffer in der Zeile mit doppelklickt anklickt"
In diesem Code steht end with. Loesche dieses.
gruss hary
AW: zur Fehlermeldung
23.04.2018 09:39:05
ChrisJeh
Ok - habe End With gelöscht.
Danach kommt Laufzeitfehler 13 "Typen unverträglich" und er markiert diese Zeile
Cells(ListBox1.List(ListBox1.ListIndex, 4), 1).Select
Was wird mit Typen unterverträglich gemeint?
AW:Bitte Bsp.-Mappe hochladen gruss owt.
23.04.2018 09:42:47
hary
.
AW: versuch mal so
23.04.2018 10:56:10
hary
Moin
Fuer solche Faelle ist es ratsam die Zeilennummer der Treffer in eine Extrapalte der Listbox einzutragen.Diese kann ausgeblendet werden.
With UserForm1.ListBox1
'Spaltenanzahl
.ColumnCount = 6 '-- eine Spalte mehr
'Item hinzufügen
.AddItem
'Unser Treffer (hier die Postleitzahl)
.List(.ListCount - 1, 0) = rngcellPLZ.Value
'Der dazugehörige Städtename eine Spalte rechts neben dem Treffer, deshalb . _
Offset(0, 1)
.List(.ListCount - 1, 1) = rngcellPLZ.Offset(0, 1).Value
'Und zu guter Letzt noch die Zelle des Treffers.
.List(.ListCount - 1, 2) = rngcellPLZ.Offset(0, 2).Value
'4. Spalte'
.List(.ListCount - 1, 3) = rngcellPLZ.Offset(0, 4).Value
'5. Spalte'
.List(.ListCount - 1, 4) = rngcellPLZ.Offset(0, 27).Value
'--neu--6. Spalte eintragen der Zeilennummer
.List(.ListCount - 1, 5) = rngcellPLZ.Row

Dann klappt:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'--auslesen der Zeilennummer in Spalte 6
Cells(ListBox1.List(ListBox1.ListIndex, 5), 1).Select
End Sub

Hab im Moment nicht soviel Zeit. Hilft dir aber bestimmt weiter.
gruss hary
Anzeige
AW: versuch mal so
24.04.2018 06:58:10
ChrisJeh
Vielen Dank für die Daten.
Habe alles eingefügt; nur leider kommt er jetzt mit .FindNext nicht mehr zurecht.
"Methode oder Datenobjekt nicht gefunden".
Ich hab echt keine Ahnung was an der Funktion verkehrt sein soll.
AW: versuch mal so
24.04.2018 10:13:03
hary
Moin
Upload nicht moeglich, da Datei 30Kb zu gross.
Teste jetzt mal mit diesen Codes ob es passt:
Private Sub CommandButton1_Click()
Dim rngcellPLZ As Range, Arbeitsplatz As Range, allgemein As Range, Bereich As Range
Dim PLZ As String
If TextBox1 = "" Then Exit Sub '-- beenden wenn nix in Textbox steht
Tabelle1.UsedRange.Interior.Color = xlNone
Set Arbeitsplatz = Union(Range("B:B"), Range("N:N")) '--Arbeitspaltzsuche nur in Spalten B  _
und N
Set allgemein = Tabelle1.Range("a:z") '--allgemeine Suche
Set Bereich = IIf(IsNumeric(TextBox1), Arbeitsplatz, allgemein) '--bei Zahl eingabe ist  _
der Bereich "Arbeitsplatz" ansonsten Berech "allgemein"
With Bereich
UserForm1.ListBox1.Clear
Set rngcellPLZ = .Find(UserForm1.TextBox1, LookIn:=xlValues, lookat:=xlPart)
If Not rngcellPLZ Is Nothing Then
PLZ = rngcellPLZ.Address
Do
With UserForm1.ListBox1
.ColumnCount = 6
.AddItem
'Unser Treffer (hier die Postleitzahl)
.List(.ListCount - 1, 0) = rngcellPLZ.Value
'Der dazugehörige Städtename eine Spalte rechts neben dem Treffer, deshalb . _
Offset(0, 1)
.List(.ListCount - 1, 1) = rngcellPLZ.Offset(0, 1).Value
'Und zu guter Letzt noch die Zelle des Treffers.
.List(.ListCount - 1, 2) = rngcellPLZ.Offset(0, 2).Value
'4. Spalte'
.List(.ListCount - 1, 3) = rngcellPLZ.Offset(0, 4).Value
'5. Spalte'
.List(.ListCount - 1, 4) = rngcellPLZ.Offset(0, 27).Value
'--neu--6. Spalte eintragen der Zellenadresse
.List(.ListCount - 1, 5) = rngcellPLZ.Address
rngcellPLZ.Interior.Color = vbGreen
rngcellPLZ.Offset(0).Interior.Color = vbGreen
.ColumnWidths = "1,5cm;1,5cm;1,5cm;2,0cm;2,0cm" '--hier noch Breite der 6.  _
Spalte eingeben
End With
Set rngcellPLZ = .FindNext(rngcellPLZ)
Loop While rngcellPLZ.Address  PLZ
End If
End With
Label1.Caption = ListBox1.ListCount & " Treffer"
If ListBox1.ListCount = 1 Then
Application.Goto Tabelle1.Range(ListBox1.List(0, 5))
End If
End Sub
'Bei Klick auf einen Treffer soll diese Zelle in der Tabelle ausgewählt werden
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Range(ListBox1.List(ListBox1.ListIndex, 5)).Select
End Sub
Private Sub TextBox1_AfterUpdate()
'-- nach Eingabe einer Zahl wird das Format "0000" genutzt fuer die Suche
If IsNumeric(TextBox1) Then TextBox1 = Format(TextBox1, "0000")
End Sub

Wenn es nicht Klappt kann ich dir die Mappe gezippt hochladen.
gruss hary
Anzeige

70 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige