Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

In Spalte Zahl suchen und Zeilennummer ausgeben
#1
Hallo,

mit folgendem Code such ich nach einem Begriff in einer oder mehreren Spalten:
      With Sheets(arrTab(i))
         loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row 'Letzte Zeile der Spalte A (1) 
         Set k = .Range("H2:H" & loLetzte).Find(strText, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
         lngAdressZeile = .k.Row                        'so gehts nicht! 
      End With


VBA/HTML - CodeConverter für Office-Foren, AddIn für Excel/Word 2000-2013 - komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 15


Nun benötige ich die Zeilennummer. Wie ermittle ich die?

Mit Range(k).Row oder k.Row geht es nicht.
Antworten Top
#2
Hallo Ralf

wie sind denn lngAdressZeile und k deklariert?

k als Range und lngAdressZeile als Long?

dann sollte k.Row schon passen

MfG Tom
Antworten Top
#3
Hi Tom,

(14.02.2016, 17:38)Crazy Tom schrieb: k als Range und lngAdressZeile als Long?

ja, so sind sie deklariert.

   For i = 0 To Ubound(arrTab)                          'Schleife über die Tabellen 
      With Sheets(arrTab(i))
         loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row 'Letzte Zeile der Spalte A (1) 
         Set k = .Range("H2:H" & loLetzte).Find(strText, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
'         MsgBox (k) 
'         lngAdressZeile = .k.Row                        'so gehts nicht! 
      End With
      If Not k Is Nothing Then
         ' Möglichkeit 1 - Marose und Atilla 
         Application.GoTo k, Scroll:=True             'diese Zeile macht dasselbe, wie in Möglichkeit 2 
         
         ' Möglichkeit 2  - Kaptn Blaubaer 
         '         Sheets(arrTab(i)).Activate 
         '         Cells(k.Row, k.Column).Select 
         '         ActiveWindow.ScrollRow = ActiveCell.Row 
         Exit For
      End If
   Next i


VBA/HTML - CodeConverter für Office-Foren, AddIn für Excel/Word 2000-2013 - komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 15


Wenn ich das Makro so laufen lasse, wird die entsprechende Zelle im Datenblatt angesprungen.
Mit der auskommentierten Msgbox wird nicht die Zeile ausgegeben oder der Zellbereich, sondern der gesuchte Wert, also kann es nicht funktionieren.

Jetzt mal ganz weg von meinem Code:
Wie könnte denn ein Makro aussehen, das mir die Zeilennummer ausgibt, in der eine gesuchte Zahl steht?
Also ein neuer Code.
Antworten Top
#4
Hallo Ralf

so habe ich es getestet, wobei ich natürlich nicht dein Array habe sondern eine Tabelle1
Code:
Sub test()
   Dim loLetzte As Long
   Dim lngAdressZeile As Long
   Dim k As Range
   Dim strText As String
   strText = "huhu"
   With Sheets("Tabelle1")
       loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row 'Letzte Zeile der Spalte A (1)
       Set k = .Range("H2:H" & loLetzte).Find(strText, LookIn:=xlValues, LookAt:=xlPart, _
           SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
       lngAdressZeile = k.Row                        'so gehts ;-)
       MsgBox lngAdressZeile
   End With
End Sub

MfG Tom
Antworten Top
#5
Hallo Ralf

hier noch ein Nachtrag
falls der Wert nicht gefunden wird darf das hier nicht fehlen
Code:
Sub test()
   Dim loLetzte As Long
   Dim lngAdressZeile As Long
   Dim k As Range
   Dim strText As String
   strText = "huhu"
   With Sheets("Tabelle1")
       loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row 'Letzte Zeile der Spalte A (1)
       Set k = .Range("H2:H" & loLetzte).Find(strText, LookIn:=xlValues, LookAt:=xlPart, _
           SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
       If Not k Is Nothing Then
           lngAdressZeile = k.Row                        'so gehts ;-)
           MsgBox lngAdressZeile
       End If
   End With
End Sub
MfG Tom
Antworten Top
#6
Hi Ralf!
MsgBox (k) gibt Dir den default des Range-Objektes zurück, dies ist .Value also der Wert.
Was ergibt MsgBox k.Address?

(Ich schätze mal, die korrekte Adresse)
Insofern ist k.Row eigentlich richtig.

Datei?

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#7
Moin Ralf,

du suchst doch eine Zahl? Da ist die Suche nach Text nicht unbedingt hilfreich ... Darum:


Code:
Sub ZeileAusgeben_GMG()
  Dim lRow As Long, rngData As Range, rngFund As Range
 
  lRow = Cells(Rows.Count, 1).End(xlUp).Row
  Set rngData = Range("A1:B" & lRow).Find(333, LookIn:=xlValues, LookAt:=xlWhole)
  If Not rngData Is Nothing Then
     MsgBox "Zeile: " & rngData.Row & vbCrLf & "Spalte: " & rngData.Column
  Else
     MsgBox "Gesuchte Zahl nicht gefunden!"
  End If
End Sub
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top
#8
Hi Tom,

(14.02.2016, 18:51)Crazy Tom schrieb: falls der Wert nicht gefunden wird darf das hier nicht fehlen

da fehlte die Fehlerbehandlung, es war das gleiche Makro wie oben. Aber ich hatte das schon in dem Makro drin.

Mit Deinem Code funktioniert es gut.
Antworten Top
#9
Hi Ralf,

(14.02.2016, 19:09)RPP63 schrieb: (Ich schätze mal, die korrekte Adresse)
Insofern ist k.Row eigentlich richtig.

ja, da kam die Adresse.

Ok, da es mit Toms Code funktioniert, lasse ich es dabei.
Antworten Top
#10
Hi Günther,

(14.02.2016, 19:18)GMG-CC schrieb: du suchst doch eine Zahl? Da ist die Suche nach Text nicht unbedingt hilfreich ... Darum:

ich teste dein Makro auch gleich mal.

Damit kriege ich es nicht hin. Woher weiß das Makro, was gesucht wird?
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste