Live-Forum - Die aktuellen Beiträge
Datum
Titel
15.07.2024 16:00:57
15.07.2024 15:41:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Automatische Treffersuche in Matrix@J. Ehrensberge

Automatische Treffersuche in Matrix@J. Ehrensberge
Mirko
Hallo Sepp,
ich melde mich nochmal bezüglich des Markos für die automatische Suche in einer Matrix. Habe dein Makro soweit implementiert. Ich bekommen allerdings nach einer Weile einen Laufzeitfehler, das ich mir beim besten Willen nicht erklären kann. Vielleicht kannst Du nochmal schauen.
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim rng As Range, strFirst As String, vntRet() As Variant, lngIndex As Long
If KeyCode = 13 Then
ReDim vntRet(1 To 4, 1 To 8)  'mal für maximal 6 fundzeilen!
Set rng = Sheets("Master").Range("GD10:GD363").Find(What:=TextBox1, LookIn:=xlValues, LookAt:= _
_
xlPart, MatchCase:=False, After:=Range("GD363"))
If Not rng Is Nothing Then
strFirst = rng.Address
Do
lngIndex = lngIndex + 1
vntRet(lngIndex, 1) = rng.Text
vntRet(lngIndex, 3) = rng.Offset(0, 1).Text -> Kann man hier Zahl stet Text schreiben?  _
_
Wenn das Text ist, bekomme ich in der Zelle immer eine grüne Fehlermeldung, die dann sagt, dass  _
„Als Text gespeicherte Zahlen“
vntRet(lngIndex, 5) = rng.Offset(0, 2).Text
vntRet(lngIndex, 7) = rng.Offset(0, 3).Text
vntRet(lngIndex, 9) = rng.Offset(0, 4).Text -> Ab hier Laufzeitfehler 9: Index auß _
erhalb des gültigen Bereichs
vntRet(lngIndex, 11) = rng.Offset(0, 5).Text
vntRet(lngIndex, 13) = rng.Offset(0, 6).Text
vntRet(lngIndex, 15) = rng.Offset(0, 7).Text
Set rng = Sheets("Master").Range("GD10:GD363").FindNext(rng)
Loop While Not rng Is Nothing And strFirst  rng.Address And lngIndex 
Tausend Dank!
Mirko

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Automatische Treffersuche in Matrix@J. Ehrensberge
14.02.2011 20:48:29
Josef

Hallo Mirko,
wenn du 15 Ausgabespalten brauchst, musst du das Array halt entsprechend dimensionieren.
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Dim rng As Range, strFirst As String, vntRet() As Variant, lngIndex As Long
  
  If KeyCode = 13 Then
    Redim vntRet(1 To 4, 1 To 15)
    
    Set rng = Sheets("Master").Range("GD10:GD363").Find(What:=TextBox1, _
      LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False, After:=Range("GD363"))
    
    If Not rng Is Nothing Then
      strFirst = rng.Address
      Do
        lngIndex = lngIndex + 1
        vntRet(lngIndex, 1) = rng.Text
        vntRet(lngIndex, 3) = rng.Offset(0, 1)
        vntRet(lngIndex, 5) = rng.Offset(0, 2)
        vntRet(lngIndex, 7) = rng.Offset(0, 3)
        vntRet(lngIndex, 9) = rng.Offset(0, 4)
        vntRet(lngIndex, 11) = rng.Offset(0, 5)
        vntRet(lngIndex, 13) = rng.Offset(0, 6)
        vntRet(lngIndex, 15) = rng.Offset(0, 7)
        
        
        Set rng = Sheets("Master").Range("GD10:GD363").FindNext(rng)
      Loop While Not rng Is Nothing And strFirst <> rng.Address And lngIndex < UBound(vntRet, 1)
    Else
      vntRet(1, 1) = "Kein Eintrag"
    End If
    
    Range("F26").Resize(UBound(vntRet, 1), UBound(vntRet, 2)) = vntRet
  End If
End Sub


Gruß Sepp

Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige