Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1440to1444
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

Ausgabe ListBox anpassen

Ausgabe ListBox anpassen
17.08.2015 15:43:55
Sven
Hallo zusammen!
Habe ein kleines Anliegen und hoffe es findet sich ein netter Helfer.
Mit viel Hilfe habe ich folgenden Code als Grundlage für meine Suchfunktion zusammengestelt bekommen bzw. übernommen und angepasst.
Ich möchte nun aber das angezeigte Ergebnis verändern.
Aktuell wird in Spalte B:B gesucht und gefunden. Jedoch soll in Spalte B nur gesucht werden, das anzuzeigende Ergebnis steht jeweils in Spalte C daneben.
Spalte C soll dann in die ListBox übernommen werden.
Vielen Dank vorab!
Private Sub Suche_1_Enter_Click()
Dim xSuche, xAdresse, xErste As String
Dim y As Boolean
Dim arr() As Variant
Dim rng As Range
Dim iRowU As Integer
Detailabfrage.Show
Detailabfrage.ListBox1.Clear
xSuche = SSD_Suchen.Suchfeld_1.Value
If xSuche = "" Then
MsgBox "Bitte erst einen Suchbegriff eingeben!", vbExclamation, "Achtung!"
Exit Sub
End If
Set rng = Worksheets("Tabelle2").Range("B:B").Find _
(xSuche, lookat:=xlWhole, LookIn:=xlValues)
If Not rng Is Nothing Then
With Worksheets("Tabelle2")
xErste = rng.Address(False, False)
y = True
Do Until xAdresse = xErste
ReDim Preserve arr(0 To 1, 0 To iRowU)
arr(0, iRowU) = .Cells(rng.Row, 2)
arr(1, iRowU) = .Cells(rng.Row, 3)
iRowU = iRowU + 1
Set rng = .Cells.FindNext(after:=rng)
xAdresse = rng.Address(False, False)
Loop
xAdresse = ""
xErste = ""
End With
End If
If y = False Then
MsgBox "Der Suchbegriff wurde nicht gefunden!"
Else
Detailabfrage.ListBox1.Column = arr
End If
End Sub
Danke und Gruß
Sven

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
.Offset
17.08.2015 16:44:43
AlexG
Hallo Sven,
ein .Offset bei der Suche sollte reichen.
Set rng = Worksheets("Tabelle2").Range("B:B").Find _
(xSuche, lookat:=xlWhole, LookIn:=xlValues).Offset(0, 1)
Gruß
Alex

AW: .Offset
17.08.2015 17:04:56
Sven
Hi Alex,
vielen Dank für deine schnelle Hilfe.
Leider funktioniert das so nicht.
Nun bekomme ich einen
  • "Laufzeitfehler 6 : Überlauf"

  • Beim debuggen sagt VBA hier liegt der Fehler:
    
    iRowU = iRowU + 1
    
    Kannst du damit was anfangen?
    Danke.

    Dim iRowU As Long -owT
    17.08.2015 17:09:52
    robert

    AW: Dim iRowU As Long -owT
    18.08.2015 09:45:41
    Sven
    Moin zusammen,
    leider funktionieren die Ansätze nicht, trotzdem vielen Dank für die Mühe!
    Grundsätzlich glaube ich der Ansatz von robert
    
    Dim iRowU As Long -owT
    
    ist generell richtig.
    Ich habe meinen Code diesbezüglich angepasst. Auch wenn mir die Bedeutung von
    
    -owT
    
    nicht geläufig ist. Einfach von Integer auf Long zu wechseln hat mein Excel eliminiert, muss über den Task Manager beendet werden.
    Wenn ich aber lookat:=xlwhole auf xlpart ändere funktioniert es theoretisch.
    Nur leider ist die Ausgabe nicht wie gewünscht. Ich habe theoretisch 3 Ergebnisse die aufgelistet werden sollen. Ich bekomme aber 9 Ergebnisse angezeigt zudem nur den Suchbegriff anstatt der ganze Zelle. Hier mein Code soweit.
    Private Sub Suche_1_Enter_Click()
    Dim xSuche, xAdresse, xErste As String
    Dim y As Boolean
    Dim arr() As Variant
    Dim rng As Range
    Dim iRowU As Long
    xSuche = SSD_Suchen.Suchfeld_1.Value
    If xSuche = "" Then
    MsgBox "Bitte erst einen Suchbegriff eingeben!", vbExclamation, "Achtung!"
    Exit Sub
    End If
    Set rng = Worksheets("Tabelle2").Range("B:B").Find _
    (xSuche, lookat:=xlPart, LookIn:=xlValues).Offset(0, 1)
    If Not rng Is Nothing Then
    With Worksheets("Tabelle2")
    xErste = rng.Address(False, False)
    y = True
    Do Until xAdresse = xErste
    ReDim Preserve arr(0 To 1, 0 To iRowU)
    arr(0, iRowU) = .Cells(rng.Row, 2)
    arr(1, iRowU) = .Cells(rng.Row, 3)
    iRowU = iRowU + 1
    Set rng = .Cells.FindNext(after:=rng)
    xAdresse = rng.Address(False, False)
    Loop
    xAdresse = ""
    xErste = ""
    End With
    Detailabfrage.Show
    End If
    If y = False Then
    MsgBox "Der Suchbegriff wurde nicht gefunden!"
    Else
    Detailabfrage.ListBox1.Column = arr
    End If
    End Sub
    
    Die ReDimm und arr Befehle kann ich nicht gegenprüfen da ich nicht verstehe wie diese funktionieren. Ich vermute mein Problem liegt dort begraben.
    Wie immer bin ich für Hilfe sehr dankbar.

    Anzeige
    Beispieldatei
    18.08.2015 10:55:37
    AlexG
    Hallo Sven,
    Ich lag mit meinem .Offset falsch. Roberts Dim as Long hat damit nichts zu tun. Damit wurde nur der gültige Zahlenbereich der Varibele erweitert. Ich kan mir den Ablauf deines Arrays noch nicht ganz vor Augen führen, da ich bei Arrays noch in den Fußstapfen stehe. Eine kleine Beispiel Datei würde helfen.
    Das -owT steht für ohne weiteren Text, da in der Antwort nur der Betreff ausgefüllt wurde, und hat nichts mit dem Code zu tun.
    Gruß
    Alex

    AW: Beispieldatei
    18.08.2015 12:11:08
    Sven
    Hallo Alex,
    vielen Dank für deine Rückmeldung. Wie gesagt ich stehe noch ganz am Anfang von meinen Projekt.
    Meine VBA Künste halten sich extrem in Grenzen, bis heute bin ich immer mit Copy&Paste und anpassen zurecht gekommen.
    Ich habe mein Projekt mal angehängt (wegen sensibler Daten nicht das Original).
    Wäre super wenn du mal reinschaust, und bitte nicht hauen (Code technisch gaaanz am Anfang).
    Vielen Dank vorab. Und wenn es zu viel ist bitte einfach kurz melden dann bastel ich selber irgendwie weiter.
    Gruß Sven

    Die Datei https://www.herber.de/bbs/user/99666.xlsm wurde aus Datenschutzgründen gelöscht


    Anzeige
    Zwei Spalten
    18.08.2015 18:36:51
    AlexG
    Hallo Sven,
    zu deiner Suche, du hast dein Array zweidimensional, deine Listbox hatte aber nur eine Spalte.
    Ich habe die Spalten der Listbox auf zwei erhöht und das Offset wieder raus genommen.
    https://www.herber.de/bbs/user/99675.xlsm
    Gruß
    Alex

    AW: Zwei Spalten
    19.08.2015 15:46:44
    Sven
    HI Alex,
    doch so simpel, da hätte ich tatsächlich selber drauf kommen können.
    Vielen vielen Dank! Manchmal sieht man den Wald vor lauter Bäumen nicht.
    Danke dir, bis zum nächsten Problem :)
    gruß Sven

    Bitte, und danke für die Rückmeldung :-) owT
    19.08.2015 18:03:18
    AlexG

    owT bedeutet ohne weiteren Text....
    18.08.2015 12:50:23
    robert
    Hi,
    also nur Dim iRowU As Long
    Schau mal in der Hilfe welchen Wert Integer maximal aufnehmen kann,
    und dann schau mal Long an.
    Dann ist dir wahrscheinlich der Fehler "Überlauf" klar.
    Gruß
    robert

    Anzeige
    AW: owT bedeutet ohne weiteren Text....
    18.08.2015 13:11:06
    Sven
    Hallo Robert,
    nochmal danke für die Erklärung, Alex war ja bereits so nett mir das Kürzel zu übersetzen :)
    Also Integer kann max. 32bit und long 64bit.
    Somit kommt es zum Überlauf weil unter long und xlWhole die Datenmenge zu groß ist und mit xlpart der Bereich eingeschränkt wird (dadurch die Datenmenge reduziert wird), richtig?
    Aber xlwhole sucht doch nach dem kompletten Zellinhalt, welcher ja auch gewünscht ist.
    Ich verstehe noch nicht warum ich tatsächlich eine zu große Datenmenge habe. Durch xlPart wird das ganze ja auf einen kleinen Bereich (mein Suchwort) begrenzt...
    Ich les noch ein bisschen, ganz verstehe ich das noch nicht.
    Danke dir Robert.
    Gruß Sven
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige