Clever-Excel-Forum

Normale Version: Makro: Text in Zeile suchen - zu Zelle springen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ein neuer Tag, ein neues Problem :)
Ich versuche im Moment eine Funktion zu erstellen, mit der ein bestimmter Text in einer Zeile gesucht werden soll. Wird dieser gefunden, soll zu der Zielzelle gesprungen werden. Falls es den Text nicht in der Zeile gibt, soll es eine Fehlermeldung geben.
Mein Code sieht im Moment noch so aus:

' Suchzeile wird initialisiert
r = 2
Dim welchesSheet As String
Dim welcherTyp As String
welchesSheet = InputBox("Hier Typ eingeben.")
welcheVariante = InputBox("Variante eingeben ")
' Excel springt zu definiertem Tabellenblatt
Sheets(welchesSheet).Activate

For s = 1 To 200
If Cells(r, s) = welcheVariante Then
    Application.Goto Reference:=Worksheets(welchesSheet).Range(r, s), _
    scroll:=True
Else
    MsgBox ("Variante nicht gefunden!")
End If
Next

Der Code funktioniert leider noch nicht. Ich weiß, dass die Else-Funktion eigentlich erst später kommen sollte, aber wie genau muss ich das definieren? 
Viele Grüße
chrjh
Hallo,

teste mal

Code:
Sub prcSuchen()

  ' Suchzeile wird initialisiert
  Dim welchesSheet As String
  Dim welcheVariante As String
  Dim rngTreffer As Range
 
  r = 2
  welchesSheet = InputBox("Hier Typ eingeben.")
  welcheVariante = InputBox("Variante eingeben ")
  ' Excel springt zu definiertem Tabellenblatt
  With Worksheets(welchesSheet)
     'Sheets(welchesSheet).Activate
     
     Set rngTreffer = .Cells(r, 1).Resize(, 200).Find(welcheVariante, LookIn:=xlValue, lookat:=xlWhole)
     If Not rngTreffer Is Nothing Then
        .Activate
        .Cells(r, rngTreffer.Column).Select
     Else
        MsgBox "Variante nicht gefunden!", vbInformation
     End If
     'For s = 1 To 200
     'If Cells(r, s) = welcheVariante Then
     '    Application.Goto Reference:=Worksheets(welchesSheet).Range(r, s), _
     '    scroll:=True
     'Else
     '    MsgBox ("Variante nicht gefunden!")
     'End If
     'Next
  End With
End Sub
(13.09.2016, 09:05)Steffl schrieb: [ -> ]teste mal

Hi Steffl, danke schonmal für deine Antwort.
Leider bekomme ich aber noch einen Laufzeitfehler bei Set rngTreffer = .Cells(r, 1).Resize(, 200).Find(welcherTyp, LookIn:=xlValue, lookat:=xlWhole)

EDIT: Excel sagt mir: "Objekt unterstützt diese Eigenschaften oder Methode nicht"
chrjh
Hallo,

sorry, habe das nicht getestet (es fehlt ein s bei Values

Code:
Sub prcSuchen()

   ' Suchzeile wird initialisiert
   Dim welchesSheet As String
   Dim welcheVariante As String
   Dim rngTreffer As Range
   Dim r
   r = 2
   welchesSheet = InputBox("Hier Typ eingeben.")
   welcheVariante = InputBox("Variante eingeben ")
   ' Excel springt zu definiertem Tabellenblatt
   With Worksheets(welchesSheet)
      'Sheets(welchesSheet).Activate
      
      Set rngTreffer = .Cells(r, 1).Resize(, 200).Find(welcheVariante, LookIn:=xlValues, lookat:=xlWhole)
      If Not rngTreffer Is Nothing Then
         .Activate
         .Cells(r, rngTreffer.Column).Select
      Else
         MsgBox "Variante nicht gefunden!", vbInformation
      End If
      'For s = 1 To 200
      'If Cells(r, s) = welcheVariante Then
      '    Application.Goto Reference:=Worksheets(welchesSheet).Range(r, s), _
      '    scroll:=True
      'Else
      '    MsgBox ("Variante nicht gefunden!")
      'End If
      'Next
   End With
End Sub
Perfekt! Jetzt funktioniert es wie gewollt. 
Gibt es vielleicht noch die Möglichkeit das so anzupassen, dass beim Sprung in die Zelle, die Zelle am linken Rand steht?
Wenn ich jetzt in meiner Tabelle nach Varianten suche, liegt die Zelle ungefähr in der Mitte. 
Viele Grüße
chrjh
Hallo,

Code:
Sub prcSuchen()

   ' Suchzeile wird initialisiert
   Dim welchesSheet As String
   Dim welcheVariante As String
   Dim rngTreffer As Range
   Dim r
   r = 2
   welchesSheet = InputBox("Hier Typ eingeben.")
   welcheVariante = InputBox("Variante eingeben ")
   ' Excel springt zu definiertem Tabellenblatt
   With Worksheets(welchesSheet)
      'Sheets(welchesSheet).Activate
      
      Set rngTreffer = .Cells(r, 1).Resize(, 200).Find(welcheVariante, LookIn:=xlValues, lookat:=xlWhole)
      If Not rngTreffer Is Nothing Then
'         .Activate
'         .Cells(r, rngTreffer.Column).Select
         Application.Goto reference:=.Cells(r, rngTreffer.Column), scroll:=True
      Else
         MsgBox "Variante nicht gefunden!", vbInformation
      End If
      'For s = 1 To 200
      'If Cells(r, s) = welcheVariante Then
      '    Application.Goto Reference:=Worksheets(welchesSheet).Range(r, s), _
      '    scroll:=True
      'Else
      '    MsgBox ("Variante nicht gefunden!")
      'End If
      'Next
   End With
End Sub
Und nochmal danke!
Genau so hatte ich mir das vorgestellt :)
Viele Grüße
chrjh