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, 18:33
(Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2016, 18:33 von Rabe.)
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.
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, 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.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
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.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
14.02.2016, 20:14
(Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2016, 11:08 von Rabe.
Bearbeitungsgrund: Orthografie korrigiert
)
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?
|