Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Listbox füllen bringt ab Zeile 10 eine Fehlermeldung
zurück: VBA: mehrere Strings in String suchen weiter: Import über einen Button Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
TimoLizzy
VBA-Anfänger


Verfasst am:
30. Apr 2014, 15:14
Rufname:

Listbox füllen bringt ab Zeile 10 eine Fehlermeldung - Listbox füllen bringt ab Zeile 10 eine Fehlermeldung

Nach oben
       Version: Office 2010

Guten Tag,

Ich habe heute in meinem Programm einen Fehler erhalten, der bisher nicht auftrat, weil zu wenig Daten vorhanden waren. Ich nutze diese Listbox als Filterelement und Suchmaske. Über Commandbuttons holt er sich die entsprechenden Daten. Allerdings kann ich maximal nur 10 ZEILEN in die Listbox einlesen lassen. Danach bringt er den Fehler "Index außerhalb des gültigen Bereichs". Im Debugmodus bleibt er im ersten straArray hängen.

Ich habe keine Ahnung wo der Fehler ist. Hat jemand eine Idee? Danke im Voraus.
Der Code lautet folgendermaßen:


Code:

Private Sub TSE_zu_messen_CMB_Click()
Dim wksQ As Worksheet
Dim strKorrekturprüfung As String
Dim vntAuftrag As Variant
Dim rngSuchbereich As Range
Dim straArray() As String
Dim rngGefunden As Range
Dim lngZeileArray As Long
Dim strFirstAddress As String

ListBox1.Clear

Set wksQ = ThisWorkbook.ActiveSheet

vntAuftrag = ">100000"
strKorrekturprüfung = "Ja"

lngAnzahl = Application.WorksheetFunction.CountIf(wksQ.Columns(1), vntAuftrag)
If lngAnzahl > 1 Then

    ReDim straArray(1 To lngAnzahl, 1 To 12) As String
    Set rngSuchbereich = wksQ.Columns(84)
 
    'nur genaue Entsprechung suchen: zu messen
    Set rngGefunden = rngSuchbereich.Find(what:=strKorrekturprüfung, after:=rngSuchbereich.Cells(1), LookIn:=xlValues, Lookat:=xlWhole)

lngZeileArray = 1
If Not rngGefunden Is Nothing Then
    strFirstAddress = rngGefunden.Address
    'Wenn in zu messen "Ja"
    Do
        If wksQ.Cells(rngGefunden.Row, 84) = strKorrekturprüfung Then
           
            straArray(lngZeileArray, 1) = wksQ.Cells(rngGefunden.Row, 1)
            straArray(lngZeileArray, 2) = wksQ.Cells(rngGefunden.Row - 1, 1)
            straArray(lngZeileArray, 3) = wksQ.Cells(rngGefunden.Row + 1, 1)
            straArray(lngZeileArray, 4) = wksQ.Cells(rngGefunden.Row + 1, 6)
            straArray(lngZeileArray, 5) = rngGefunden.Row
            straArray(lngZeileArray, 6) = wksQ.Cells(rngGefunden.Row, 84)
            straArray(lngZeileArray, 7) = wksQ.Cells(rngGefunden.Row, 85)
            straArray(lngZeileArray, 8) = wksQ.Cells(rngGefunden.Row, 87)
            straArray(lngZeileArray, 9) = wksQ.Cells(rngGefunden.Row, 89)
            straArray(lngZeileArray, 10) = wksQ.Cells(rngGefunden.Row, 86)
            straArray(lngZeileArray, 11) = wksQ.Cells(rngGefunden.Row, 88)
            straArray(lngZeileArray, 12) = wksQ.Cells(rngGefunden.Row, 90)
            lngZeileArray = lngZeileArray + 1
        End If
            Set rngGefunden = rngSuchbereich.FindNext(rngGefunden)
            Loop While Not rngGefunden Is Nothing And rngGefunden.Address <> strFirstAddress
End If

    ListBox1.Clear
    ListBox1.ColumnCount = 12
    ListBox1.ColumnWidths = "2cm;1,5cm;3cm;2,5cm;1,5cm;2,5cm;2,5cm;2,5cm;2,5cm;2,5cm;2,5cm; 2cm"
    ListBox1.ColumnHeads = False ' nicht möglich!!!
    ListBox1.List = straArray
 End If
 
 MsgBox "Verfügbare Daten wurden in die Tabelle übertagen.", vbInformation
End Sub


Gruß

Lizzy
Gast



Verfasst am:
30. Apr 2014, 15:22
Rufname:

AW: Listbox füllen bringt ab Zeile 10 eine Fehlermeldung - AW: Listbox füllen bringt ab Zeile 10 eine Fehlermeldung

Nach oben
       Version: Office 2010

HI
prüf nochmal, ob du die Anzahl der Zeilen für das Array auch richtig ermittelst.
für micht besteht da kein erkennbarer Zusammenhang zwischen deiner Berechnung der Anzahl und der Prüfung, mit der du ermittelst, ob ein Wert ins Array muss oder nicht.
Das sollte natürlich in irgendeiner Form zusammenpassen.

Ermittlung der Anzahl der Elemente:
Code:
lngAnzahl = Application.WorksheetFunction.CountIf(wksQ.Columns(1), ">100000")


Tatsächliche Prüfung für die Aufnahme in die Listbox
Code:
If wksQ.Cells(rngGefunden.Row, 84) = "ja" Then


da passt weder Spalte noch abgefragter Wert.

Gruß Daniel
TimoLizzy
VBA-Anfänger


Verfasst am:
30. Apr 2014, 15:56
Rufname:

AW: Listbox füllen bringt ab Zeile 10 eine Fehlermeldung - AW: Listbox füllen bringt ab Zeile 10 eine Fehlermeldung

Nach oben
       Version: Office 2010

Hi Daniel

Danke. Da wird der Fehler wohl verborgen sein.

Ich würde ja gerne ein Bild der Tabelle hochladen. Auf die Schnelle finde ich keine Anleitung wie das hier funktioniert.

Grundsätzlicher Aufbau der Tabelle:

1. Jede 3. Zeile steht ein Wert >100000 --> Zählen der Zeilen (lngAnzahl)
2. In jeder dieser Zeilen mit diesem >Wert steht auch der Suchwert ... rngSuchbereich = wksQ.Columns(84)....
3. Wenn der Suchwert übereinstimmt soll weiter geprüft werden, ob in einer weiteren Zelle ein bestimmter Wert steht. Erst dann soll der Datensatz in die Liste übertragen werden. --> If wksQ.Cells(rngGefunden.Row, 86).....

Achtung! nicht wie vorher beschrieben 84, sondern 86.

Es kann jetzt natürlich sein, dass die Anzahl >100000 und 84 nicht identisch sind. Ist das dann der Fehler?

Gruß

Lizzy


[/url]
Gast



Verfasst am:
30. Apr 2014, 16:10
Rufname:

AW: Listbox füllen bringt ab Zeile 10 eine Fehlermeldung - AW: Listbox füllen bringt ab Zeile 10 eine Fehlermeldung

Nach oben
       Version: Office 2010

ja, ist ne Möglichkeit

wenn du ein Array mit 1 to 100 Dimensionierst, dann kannst du auch nur 100 Elemente reintun.
wenn du versuchst, den Index 101 anzusprechen, kommt der Fehler "Index ausserhalb des gültigen Bereichs".

Deshalb sollte die Methode, mit der du prüfst, wieviele Elemente benötigt werden, zu der Methode passen, mit der du prüfst, ob ein Element ins Array übernommen werden muss.

Gruß Daniel
TimoLizzy
VBA-Anfänger


Verfasst am:
30. Apr 2014, 16:30
Rufname:

AW: Listbox füllen bringt ab Zeile 10 eine Fehlermeldung - AW: Listbox füllen bringt ab Zeile 10 eine Fehlermeldung

Nach oben
       Version: Office 2010

Hi

Danke für die Info. Also, es scheint mit der eindeutigen Ermittlung der Zeilenzahl zu funktionieren. Was ich allerdings nicht hinbekomme ist der Suchwert. Mit der einen Variante geht es. Mit der anderen nicht.

Bei diesem Code sucht er nicht richtig und zeigt nichts an. Wäre mir aber am Liebsten, weil Spalte 1 eindeutig ist:

Code:

lngAnzahl = Application.WorksheetFunction.CountIf(wksQ.Columns(1), ">100000")
If lngAnzahl > 1 Then

    ReDim straArray(1 To lngAnzahl, 1 To 12) As String
    Set rngSuchbereich = wksQ.Columns(1)
 
    'nur genaue Entsprechung suchen: Abstimmung ohne Korrektur JA
    Set rngGefunden = rngSuchbereich.Find(what:=">100000", after:=rngSuchbereich.Cells(1), LookIn:=xlValues, Lookat:=xlWhole)


Bei diesem Code sucht er richtig und zeigt alles an. Ich muss aber definitiv nach >10000 suchen. Scheint wohl in der Find-Methode nicht zu gehen.

Code:

lngAnzahl = Application.WorksheetFunction.CountIf(wksQ.Columns(1), "Hallo")
If lngAnzahl > 1 Then

    ReDim straArray(1 To lngAnzahl, 1 To 12) As String
    Set rngSuchbereich = wksQ.Columns(1)
 
    'nur genaue Entsprechung suchen
    Set rngGefunden = rngSuchbereich.Find(what:="Hallo", after:=rngSuchbereich.Cells(1), LookIn:=xlValues, Lookat:=xlWhole)


Wäre echt toll, wenn das ginge. Ansonsten muss ich mir eine neue unnötige Spalte mit einem Textwert einfügen.

Gruß

Lizzy
TimoLizzy
VBA-Anfänger


Verfasst am:
30. Apr 2014, 16:36
Rufname:

AW: Listbox füllen bringt ab Zeile 10 eine Fehlermeldung - AW: Listbox füllen bringt ab Zeile 10 eine Fehlermeldung

Nach oben
       Version: Office 2010

Nachtrag

Der Grundgedanke war, dass ich die maximale Anzahl der Zeilen ermittle, da ich bei der anschließenden Suche auf den Fall unterhalb dieser bleiben würde. Der Gedanke war wohl falsch.

Und übrigens Danke für die Hilfe. Wünsche dann einen angenehmen Feiertag und evtl. verlängertes WE.

Gruß

Lizzy
Gast



Verfasst am:
30. Apr 2014, 17:02
Rufname:

AW: Listbox füllen bringt ab Zeile 10 eine Fehlermeldung - AW: Listbox füllen bringt ab Zeile 10 eine Fehlermeldung

Nach oben
       Version: Office 2010

Hi
also so wie ich das verstanden habe, wird ein Wert in die Listbox übernommen, wenn in Spalte 84 ein "ja" steht.
also musst du für die dimensionierung zählen, wie oft in Spalte 84 ein "ja" steht und nicht wie oft in Spalte 1 der wert >100000 ist.

Gruß Daniel
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Fehlermeldung #Wert unterdrücken 4 Hermi9 8583 11. Dez 2005, 10:30
Hermi9 Fehlermeldung #Wert unterdrücken
Keine neuen Beiträge Excel Formeln: Bestimmte Zeile summieren 2 Enkel Abrahams 678 09. Dez 2005, 11:37
Enkel Abrahams Bestimmte Zeile summieren
Keine neuen Beiträge Excel Formeln: in Zeile aus Spalten schreiben??? 6 robert_de 2318 25. Nov 2005, 12:10
robert_de in Zeile aus Spalten schreiben???
Keine neuen Beiträge Excel Formeln: Zeile einfügen per Schaltfläche 1 Bernie42 673 29. Okt 2005, 10:49
< Peter > Zeile einfügen per Schaltfläche
Keine neuen Beiträge Excel Formeln: Zahlen in einer Zeile auswerten nach den Größtwerten 11 Nicole-Fun 908 26. Okt 2005, 09:44
ransi Zahlen in einer Zeile auswerten nach den Größtwerten
Keine neuen Beiträge Excel Formeln: Wenn Wert = 0,00 dann Zeile davor und die eigene Grün 9 Speedy@Web 1993 22. Okt 2005, 20:19
Maxel3113 Wenn Wert = 0,00 dann Zeile davor und die eigene Grün
Keine neuen Beiträge Excel Formeln: SUMMEWENN mit Suchkriterium Datum;Datum nach jeder Zeile +1? 4 homer_134 3721 20. Sep 2005, 23:48
homer_134 SUMMEWENN mit Suchkriterium Datum;Datum nach jeder Zeile +1?
Keine neuen Beiträge Excel Formeln: Autofilter funktioniert nur bis Zeile 143?? 2 landau666 889 07. Sep 2005, 21:10
landau666 Autofilter funktioniert nur bis Zeile 143??
Keine neuen Beiträge Excel Formeln: bedingte Formatierung ganze Zeile enfärben 2 skyblue 2516 06. Sep 2005, 12:41
skyblue bedingte Formatierung ganze Zeile enfärben
Keine neuen Beiträge Excel Formeln: Vergleich Zeile mit einem Bereich (in einer WENN Funktion)? 2 GelbesAuge 2395 22. Aug 2005, 21:24
Gast Vergleich Zeile mit einem Bereich (in einer WENN Funktion)?
Keine neuen Beiträge Excel Formeln: Zeile automatisch einfügen (ab Excel 97) 1 frechmops6 1799 16. Apr 2005, 22:22
Kuwe Zeile automatisch einfügen (ab Excel 97)
Keine neuen Beiträge Excel Formeln: *** Automatische übernahme einer Zeile in ein anderes Sheet 5 Lucas 1586 10. Feb 2005, 17:44
fridgenep *** Automatische übernahme einer Zeile in ein anderes Sheet
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: CSS Forum