Kriterienfelder in ein Array einlesen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Kriterienfelder in ein Array einlesen
von: paula
Geschrieben am: 21.04.2005 17:09:33
Hallo ihr Lieben,
die Recherche gibt unzählige Beispiele für das Suchen nach 2 od mehr feststehenden Kriterien in einer Datenbank od Zellenbereich,jedoch für das Suchen mit Arrays hab ich selbst nach Stunden nichts vernünftiges gefunden.
Ich bräuchte nur den zündenden Funken.
Die Datenbank hat 7 Spalten, die Daten fangen ab Zeile 5, due UF hat 7 Textboxes entsprechend der Spalten durchnumeriert(Textbox1 für Suchwert aus SP1, usw.)
Jetzt versuche ich in einer Schleife die Textboxes nach Inhalt zu prüfen und wenn ja, die Nummer der jenigen in ein Array zu lesen und als Kriterienfelder für die Suche zu benutzen.Es klappt nicht
Vermeiden möchte ich die Lösung mit den 2. Tabellenblatt als Platzhalter für die Suchkriterien.
Bin ich mit meinem Lösungsweg auf dem Holzweg? Bitte helft mir auf die Sprünge
Vielen Dank im Voraus
Paula
Option Explicit
Dim i As Integer
Dim iRow As Integer
Dim db_Gefunden As Boolean
Dim arr_gefundenZeile(100)
Dim db_AnzalGefunden As Integer
Dim arr_Krit(1 To 7)


Private Sub cmdSuchen_Click()
'----Modus einstellen
Modus_Suche = True
'
'Regelung der CommandButtons
'----Gruppe2
cmdSuchen.Visible = False
cmdSuchkriterien.Visible = False
cmdSucheBeenden.Visible = True
'
For i = 1 To 7
    If Controls("TextBox" & i).Value <> "" Then
        arr_Krit(i) = i '
    Else
        arr_Krit(i) = ""
    End If
    'MsgBox arr_Krit(i)
Next i
db_AnzalGefunden = 0
With Worksheets("Datenbank") 'hier sind die Datensätze
    iRow = 5                 'ab hier soll gesucht werden
    Do Until IsEmpty(.Cells(iRow, 1))
        For i = 1 To 7
            If arr_Krit(i) <> "" Then
                If .Cells(iRow, arr_Krit(i)).Value = Controls("TextBox" & i).Value Then
                db_Gefunden = True
                arr_gefundenZeile(iRow) = iRow
                db_AnzalGefunden = db_AnzalGefunden + 1
                End If
            End If
        Next i
    iRow = iRow + 1
    Loop
End With
MsgBox "Anzahl:" & db_AnzalGefunden
End Sub

Bild

Betrifft: AW: Bitte helft mir doch !
von: Paula
Geschrieben am: 21.04.2005 18:10:56
Gruss Paula
Bild

Betrifft: AW: Flehe euch um Hilfe an!
von: paula
Geschrieben am: 21.04.2005 18:41:20
Hallo Ihr,
Weiss denn keiner einen Rat?
Gruss Paula
Bild

Betrifft: AW: Flehe euch um Hilfe an!
von: MichaV
Geschrieben am: 21.04.2005 18:47:08
Hi,
lad doch mal bitte eine Beispielmappe hoch. Vielleicht wird dann die Aufgabenstellung etwas klarer.
Gruß- Micha
Bild

Betrifft: AW: Flehe euch um Hilfe an!
von: paula
Geschrieben am: 21.04.2005 19:09:06
hallo Micha,
hier die Beispielmappe
https://www.herber.de/bbs/user/21508.xls
Danke schon mal
Gruss Paula
Bild

Betrifft: AW: Flehe euch um Hilfe an!
von: MichaV
Geschrieben am: 21.04.2005 19:33:27
Hi,
in einigen Spalten klappt die Suche ja schon (mind. C und D). Die anderen Spalten (bis auf H) klappen auch, wenn Du
If .Cells(iRow, arr_Krit(i)).Text = Controls("TextBox" & i).Text Then
verwendest.
Willst Du auch die Suche nach mehreren Suchkriterien? (z.B. Spalte 3 und Spalte 5)?
Ich schau gegen 23:00 wieder rein, wenns bis dahin nicht erledigt ist, schau ich mir die Sache auf jeden Fall nochmal an.
Gruß- Micha
Bild

Betrifft: AW: Flehe euch um Hilfe an!
von: Paula
Geschrieben am: 21.04.2005 20:10:06
Hallo Micha,
genau das ist das Problem, wenn txtbox1 u txtbox3, txtbox1 u txtbox4 u txtbox7, txtbox1 u txtbox3 u txtbox7, mehrere Möglichkeiten sollen möglich sein, je nach dem welche txtboxen einen wert haben, doch wie gestalte ich die Schleife mit den Array?
Wenn arr_Krit(3) bspw. keinen Wert gespeichert hat, gibt es eine Fehlermeldung
Danke dass du dich darum bemühst,wäre dankbar für eine Hildestellung
Gruss Paula

Bild

Betrifft: AW: Flehe euch um Hilfe an!
von: MichaV
Geschrieben am: 21.04.2005 23:08:59
Hi,
schau mal, ob es so okay ist.


      
Dim blnSuche(1 To 7) As Boolean
Dim blnIdentisch As Boolean
'----Modus einstellen
Modus_Suche = True
'
'Regelung der CommandButtons
'----Gruppe2
cmdSuchen.Visible = False
cmdSuchkriterien.Visible = 
False
cmdSucheBeenden.Visible = 
True
'
For i = 1 To 7
    
If Controls("TextBox" & i).Value <> "" Then
        blnSuche(i) = 
True
    
Else
        blnSuche(i) = 
False
    
End If
Next i
db_AnzalGefunden = 0
With Worksheets("Datenbank")
    iRow = 5
    
Do Until IsEmpty(.Cells(iRow, 1))
        blnIdentisch = 
True
        
For i = 1 To 7
            
If blnSuche(i) Then
                
If Not .Cells(iRow, i).Text = Controls("TextBox" & i).Text Then
                  blnIdentisch = 
False
                
End If
            
End If
            
If Not blnIdentisch Then Exit For
        
Next i
        
If blnIdentisch Then
            db_Gefunden = 
True
            arr_gefundenZeile(iRow) = iRow
            db_AnzalGefunden = db_AnzalGefunden + 1
        
End If
            
        
    iRow = iRow + 1
    
Loop
End With 

     Code eingefügt mit Syntaxhighlighter 3.0


Gruß- Micha
PS: Rückmeldung wäre nett
Bild

Betrifft: AW: Micha, bist ein Schatz, es funzt ;-))))
von: paula
Geschrieben am: 22.04.2005 09:26:59
hi Micha,
Guten Morgen und DDDDD AAAAAAAA NNNNNNN KKKKKKK EEEEEEE,
es funzt, obwohl ich noch nicht kapier wie.
Wenn du Zeit hättest, könntest du mir kurz erklären, was das Ausschlaggebende für das Funzen des Codes ist?
Hier jetzt der geil funzende Code mit deinem Vorschlag:
Private Sub Suchen_Click()
Dim blnSuche(1 To 7) As Boolean
Dim blnIdentisch As Boolean
'----Modus einstellen
Modus_Suche = True
'
'Regelung der CommandButtons
'----Gruppe2
cmdSuchen.Visible = False
cmdSuchkriterien.Visible = False
cmdSucheBeenden.Visible = True
'
For i = 1 To 7
If Controls("TextBox" & i).Value <> "" Then
blnSuche(i) = True
Else
blnSuche(i) = False
End If
Next i
db_AnzalGefunden = 0
With Worksheets("Datenbank")
iRow = 5
Do Until IsEmpty(.Cells(iRow, 1))
blnIdentisch = True
For i = 1 To 7
If blnSuche(i) Then
If Not .Cells(iRow, i).Text = Controls("TextBox" & i).Text Then
blnIdentisch = False
End If
End If
If Not blnIdentisch Then Exit For
Next i
If blnIdentisch Then
db_AnzalGefunden = db_AnzalGefunden + 1
arr_gefundenZeile(db_AnzalGefunden) = iRow
End If
iRow = iRow + 1
Loop
End With
'
MsgBox "Anzahl: " & db_AnzalGefunden
If db_AnzalGefunden <> 0 Then
For i = 1 To db_AnzalGefunden
MsgBox "Nr: " & i & " von " & db_AnzalGefunden & " in Zeile " & arr_gefundenZeile(i)
Next i
Else
MsgBox "Kein Datensatz gefunden!"
End If
Melde dich bitte
Danke
Gruss Paula
Bild

Betrifft: AW: Micha, bist ein Schatz, es funzt ;-))))
von: MichaV
Geschrieben am: 22.04.2005 11:08:39
Hi,
freut mich, daß ich helfen konnte.
Hier noch einige Erklärungen. Ich hab den Code auf das (für meine Fähigkeiten) Mindestmaß gekürzt. Dabei ist auch Dein Suchkriterien- Array rausgeflogen, sorry. Ist aber nicht unbedingt notwendig, sofern Du es nicht noch an anderen Stellen benötigst.


      
With Worksheets("Datenbank")
  iRow = 5
  
Do Until IsEmpty(.Cells(iRow, 1))
    blnIdentisch = 
True
    
For i = 1 To 7 'alle möglichen Suchkriterien
      If Controls("TextBox" & i).Text <> "" Then 'ein Suchkriterium vorhanden!
        If Not .Cells(iRow, i).Text = Controls("TextBox" & i).Text Then
        
'Wenn nicht Vergleichskriterium=Suchkriterium
          blnIdentisch = False
          
'kein gleiches Paar, Suche abbrechen
          Exit For
        
End If
      
End If
    
Next i
    
If blnIdentisch Then 'wenn jetzt noch kein ungleiches Paar gefunden
    'dann stimmen alle Suchkriterien mit den jeweiligen Vergleichskriterien
    'überein, blnIdentisch ist noch TRUE - ein Treffer!
    '
    'Möglich ist hier auch if i>7 then, denn das tritt nur auf,
    'wenn For- Next nicht mit Exit For verlassen wurde
    'dann kannst Du ganz auf blnGefunden verzichten, ist
    'aber anfälliger bei späteren Änderungen (Du müsstest die 7 zwei mal ändern)

    ... 

     Code eingefügt mit Syntaxhighlighter 3.0


Frohes Schaffen noch!
Micha
PS: ich bin mir sicher, daß man Dir auch ohne Deine flehenden Hilferufe geholfen hätte. Vielleicht haben gerade die einige Antworter abgeschreckt.
Bild

Betrifft: AW: Bitte Leute!Brauche dringend Hilfe!!
von: paula
Geschrieben am: 21.04.2005 19:57:03
Hallo an alle die noch da sind,
hier die Beispielmappe, mein Problem ist im ersten Thread
https://www.herber.de/bbs/user/21508.xls
Danke euch schon mal
Gruss Paula
Bild

Betrifft: AW: kleine Hilfe geleistet...
von: FP
Geschrieben am: 21.04.2005 22:07:26
Hallo Paula,
https://www.herber.de/bbs/user/21538.xls
Servus aus dem Salzkammergut
Franz
Bild

Betrifft: AW: ges. Werte sollten in einer zeile vorkommen
von: paula
Geschrieben am: 21.04.2005 22:35:59
Hallo Franz
danke dir schon mal für die Hilfestellung
Hab die Userform getestet und festgestellt dass die gesuchten Werte aus den textboxen addiert werden und nicht datensatzzusammenhängend sind.Beispiel:
txtbox3 ="snt"
txtbox4 ="CU"

gefundene= 11 , obwohl in der DB nur 3 Datensätze vorkommen mit den 2 werten in einer zeile
Die gesuchten Werte sollten alle gleichzeitig in einem Datensatz vorkommen.
Was müsste dafür geändert werden?
Danke
Gruss Paula
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Kriterienfelder in ein Array einlesen"