Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
600to604
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
600to604
600to604
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kriterienfelder in ein Array einlesen

Kriterienfelder in ein Array einlesen
21.04.2005 17:09:33
paula
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

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bitte helft mir doch !
21.04.2005 18:10:56
Paula
Gruss Paula
AW: Flehe euch um Hilfe an!
21.04.2005 18:41:20
paula
Hallo Ihr,
Weiss denn keiner einen Rat?
Gruss Paula
AW: Flehe euch um Hilfe an!
21.04.2005 18:47:08
MichaV
Hi,
lad doch mal bitte eine Beispielmappe hoch. Vielleicht wird dann die Aufgabenstellung etwas klarer.
Gruß- Micha
AW: Flehe euch um Hilfe an!
21.04.2005 19:09:06
paula
hallo Micha,
hier die Beispielmappe

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

Danke schon mal
Gruss Paula
AW: Flehe euch um Hilfe an!
21.04.2005 19:33:27
MichaV
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
Anzeige
AW: Flehe euch um Hilfe an!
21.04.2005 20:10:06
Paula
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

AW: Flehe euch um Hilfe an!
21.04.2005 23:08:59
MichaV
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
Anzeige
AW: Micha, bist ein Schatz, es funzt ;-))))
22.04.2005 09:26:59
paula
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
Anzeige
AW: Micha, bist ein Schatz, es funzt ;-))))
22.04.2005 11:08:39
MichaV
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.
Anzeige
AW: Bitte Leute!Brauche dringend Hilfe!!
21.04.2005 19:57:03
paula
Hallo an alle die noch da sind,
hier die Beispielmappe, mein Problem ist im ersten Thread

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

Danke euch schon mal
Gruss Paula
AW: ges. Werte sollten in einer zeile vorkommen
21.04.2005 22:35:59
paula
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
Anzeige

228 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige