online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Eleve vom 28.10.2021, 16:11 Options

Lösung

Daten aus mehrdimensionalem Datenfeld auslesen - VBA

Hallo Leute,

hier mein Problem:

Ich habe in einem mehrdimensionalen Datenfeld 6 Spalten aus einem Tabellenblatt eingelesen.
Über eine Inputbox wird ein Suchbegriff sSuche abgefragt und nach dem Suchbegriff mit folgendem code gesucht. Bei einem Fund sollen Werte aus der entsprechenden Zeile im array in ein Listenfeld übertragen werden.

For Each rQuelle In myArray
If InStr(1, rQuelle, sSuche, vbTextCompare) > 0 Then ' hier soll ein Ereignis kommen!
Next rQuelle

Wie muss ich das Ereignis fomulieren?

Vielen Dank schon mal für Eure Zeit.

Eleve


Antwort schreiben

Antwort 1 von nighty vom 28.10.2021, 19:34 OptionsLösung

Lösung
hi eleve ^^

ein beispiel

gruss nighty

ausgehend von einem listenfeld ueber daten gueltigkeit was ueber einen rangebereich dargestellt wird

rangebereich fuer die liste = spalte h die ausgeblendet sein sollte

arraydaten spalten a bis f

spalte a suchbegriffe

spalten b bis f darstellung der liste

Option Explicit
Sub ArrSuche()
    Dim Lzeile As Long, Zaehler As Long
    Dim Suche As String
    Dim Spalte As Integer
    Lzeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    ReDim ArrQ(Lzeile, 6) As Variant
    ReDim ArrZ(5, 1) As Variant
    ArrQ() = Range("A1:F" & Lzeile)
    ArrZ() = Range("A1:A" & 5)
    Suche = InputBox("Eingabe")
    For Zaehler = 1 To Lzeile
        If ArrQ(Zaehler, 1) = Suche Then
            For Spalte = 2 To 6
                ArrZ(Spalte - 1, 1) = ArrQ(Zaehler, Spalte)
            Next Spalte
            Exit For
        End If
    Next Zaehler
    Range("H1:H5") = ArrZ()
End Sub

Antwort 2 von nighty vom 28.10.2021, 19:49 Options

hi all ^^

die findmethode haette hier sicherlich auch ausgereicht.da es ja wie es scheint nur 5 auszulesende zellen sind und geschwindigkeitsprobleme nicht zu erwarten sind,hab mich verleiten lassen ^^

hier mit der findmethode

Option Explicit
Sub FindSuche()
    Dim Spalte As Integer
    ReDim ArrZ(5, 1) As Variant
    Dim suche As Range
    ArrZ() = Range("A1:A" & 5)
    Set suche = Worksheets(1).Range("A1:A" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row).Find(InputBox("Eingabe"))
    If Not suche Is Nothing Then
        For Spalte = 2 To 6
            ArrZ(Spalte - 1, 1) = Cells(suche.Row, Spalte)
        Next Spalte
    End If
    Range("H1:H5") = ArrZ()
End Sub

Antwort 3 von Eleve vom 03.11.2021, 15:47 Options

Lieber nighty,

es läuft und spart mir jede Menge Zeit. Ich hatte mich wohl etwas falsch ausgedrückt, ich habe den Array -Ansatz gewähl, weil mir die find - Suche zu lange gedauert hat, da ich 6 Spalten mit jeweils ca.8000 Zeilen durchsuche, und das kann dann schon mal ein paar Sekunden dauern.

Vielen Dank für Deine schnelle Hilfe!

Eleve

Ähnliche Themen

Daten eines bestimmten Zeitraums auslesen
Kaleun  26.06.2008 - 97 Hits - 2 Antworten

VBA - Füllfabe aus Sysmolleiste "Format" auslesen
Tomschi  07.10.2008 - 3 Hits - 9 Antworten

Excel 2007 - Per Makro Daten nach Bedingung auslesen und sortieren
AlexS  24.11.2008 - 140 Hits - 4 Antworten

VBA-Daten kopieren
finger59  09.07.2009 - 174 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026