Registriert seit: 10.04.2014
Version(en): 2016 + 365
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.
Registriert seit: 12.04.2014
Version(en): Office 365
Hallo Ralf
wie sind denn lngAdressZeile und k deklariert?
k als Range und lngAdressZeile als Long?
dann sollte k.Row schon passen
MfG Tom
Registriert seit: 10.04.2014
Version(en): 2016 + 365
14.02.2016, 19:33
(Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2016, 19:33 von Rabe.)
Hi Tom, (14.02.2016, 18: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.
Registriert seit: 12.04.2014
Version(en): Office 365
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
Registriert seit: 12.04.2014
Version(en): Office 365
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
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)
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
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!
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi Tom, (14.02.2016, 19: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.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi Ralf, (14.02.2016, 20: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.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
14.02.2016, 21:14
(Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2016, 12:08 von Rabe.
Bearbeitungsgrund: Orthografie korrigiert
)
Hi Günther, (14.02.2016, 20: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?
|