|  
                                             
	Hallo, 
	ich habe einen vba code geschrieben, um eine Liste nach einem Bestimmten String zu durchsuchen und dann 2 Teilstrings aus der gefundenen Zelle wieder getrennt zurückzugeben. Mein Suchalgorithmus ist leider ein wenig kompliziert, da ich in zwei Etappen suchen muss. Da sich meine eigentliche Frage jedoch nicht auf den Algorithmus an sich bezieht, sehe ich von weiteren Erklärungen ab.  
	Der Algorithmus läuft jetzt einwandfrei, da er jedoch seeeeeeehr seeeeehr lange braucht, wollte ich den Code umschreiben, in einen Array basierten Code. Ich habe jedoch noch nie mit Arrays gearbeitet und stoße echt an meine Grenzen. Ich weiß einfach nicht wie ich das umsetzten soll, bzw. ob das überhaupt so einfach geht wie gedacht.  
	Hier erstmal mein mein Basiscode: 
	____________________________________________________________________________________________________________________________ 
Sub SUCHE()
Dim Suchnummer, Ablaufdatum1, Ablaufdatum2, Land, Suchstring2, Suchstring3, Suchstring4, ZellenInhalt, LegalState As String
Dim Bereich, Gefunden1, Gefunden2, Suchbereich As Range
Dim Zeile, Spalte, TextPos1, TextPos2, TextPos3, Länge, Länge2, Länge3 As Integer
Dim k As Integer
Suchstring3 = "Actual or expected expiration date="
Suchstring4 = "Legal state="
For k = 2 To 3
        Suchnummer = Sheets("Report").Cells(k, 7).Value
        Land = Sheets("Report").Cells(k, 2).Value
        Suchstring2 = "LEGAL DETAILS FOR " & Land
        
        If Sheets("Report").Cells(k, 7).Value <> "" Then
               Set Gefunden1 = Sheets("Orbit").Cells.Find(What:=Suchnummer, After:=Cells(1, 1), LookIn:=xlValues, _
               LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
               MatchCase:=False, SearchFormat:=False)
                        If Gefunden1 Is Nothing Then GoTo Überspringen
                Zeile = Gefunden1.Row
                
                       With Sheets("Orbit")
                
                        Set Gefunden2 = .Range(.Cells(Zeile, 1), .Cells(Zeile, 34)).Find(What:=Suchstring2, LookIn:=xlValues, _
                        LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                        MatchCase:=False, SearchFormat:=False)
                
                        End With
                                If Gefunden2 Is Nothing Then GoTo Überspringen
                                        Spalte = Gefunden2.Column
                    
                                        ZellenInhalt = Sheets("Orbit").Cells(Zeile, Spalte).Value
                    
                                        TextPos1 = InStr(ZellenInhalt, Suchstring2)
                    
                                        Länge = Len(ZellenInhalt)
                    
                                        Ablaufdatum1 = Right(ZellenInhalt, (Länge - TextPos1))
                    
                                        TextPos2 = InStr(Ablaufdatum1, Suchstring3) + 34
                    
                                        Länge2 = Len(Ablaufdatum1)
                    
                                        Ablaufdatum2 = Right(Ablaufdatum1, (Länge2 - TextPos2))
                    
                                        TextPos3 = InStr(Ablaufdatum2, Suchstring4) + 11
                    
                                        Länge3 = Len(Ablaufdatum2)
                    
                                        LegalState = Right(Ablaufdatum2, Länge3 - TextPos3)
                    
                                        LegalState = Left(LegalState, 5)
                    
                                        Ablaufdatum2 = Left(Ablaufdatum2, 10)
                                        Sheets("Report").Cells(k, 19).Value = Ablaufdatum2
                                   
                                        Sheets("Report").Cells(k, 20).Value = LegalState
                    Überspringen:
          End If
Next
End Sub
	______________________________________________________________________________________________________________________ 
	  
	Mein Plan war jetzt die Excel Tabelle von Sheet "Report" und Sheet "Orbit" jeweils in einen Array zu packen. Das bekomme ich glaube ich auch noch hin... 
	  
	
Dim arrOrbit 
Dim arrReport
arrOrbit = Range("A1:K1763").Value
arrReport = Range ("E1:G5055").Value
 
	  
	Die Forschleife möchte ich dann über:
	 
For z= 2 to UBound(arrReport,1) 
	durch alle Zeilen des arrReport laufen lassen  
	  
	Dann stoße ich aber auch schon an meine Grenzen... ich bekomme es einfach nicht gebacken einen Wert aus einem Arrayfeld auszulesen und in eine Variable zu packen. Ich wolle das wie folgt machen... Suchnummer= arrReport(z,7).Value... das funktioniert aber leider nicht! Kann mir hier jemand weiterhelfen??? Wie kann ich bestimmte Felder in einem Array ansprechen? Order war der Fehler dass ich den Array oben nicht dimensioniert habe? 
	Dann habe ich noch eine Weitere Frage:  
	Kann ich in einem Array auch einfach mit der Funktion "find" arbeiten? Oder müsste ich hier eine andere Funktion verwenden?  
	Ich hatte mir das so vorgestellt: 
	 
Set Gefunden1 = arrOrbit.Find(What:=Suchnummer, LookIn .... usw.)
 
 
	Über sonstige Anregungen freue ich mich auch sehr, ich bin für alles offen :) 
	  
	Vielen Dank 
	Beste Grüße 
	Perry 
     |