Anzeige
Archiv - Navigation
1548to1552
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeile bei der Suche auslassen

Zeile bei der Suche auslassen
24.03.2017 09:24:59
Peter
Hallo Zusammen
ich hab mal wieder ein Problemchen. Ich möchte unten stehenden Code so ändern das die Suche erst bei Zeile 12 beginnt. Wie kann ich das lösen ?
Sub Zeilemarkieren_Auftrag_ändern()
Dim Dropdown As String
Dim Namenspalte As String
Dim Suchbegriff   ' As Variant
Dim myRow         ' As Variant
Stammdatensheet = "Bestand"
Bearbeitungssheet = "Aufträge Umsätze eingeben"
Dropdown = "B9"
Namenspalte = "D:D"
With Sheets(Stammdatensheet)
.Activate
'Holt den ausgewählten Wert aus dem Dropdownfeld
Suchbegriff = ThisWorkbook.Sheets(Bearbeitungssheet).Range(Dropdown).Value
If IsNumeric(Suchbegriff) Then Suchbegriff = --Suchbegriff
'Ermittelt die Zeile, wo der Name steht
myRow = Application.Match(Suchbegriff, .Range(Namenspalte), 0)
If IsNumeric(myRow) Then
.Rows(myRow).Select
Else
MsgBox Suchbegriff & " nicht gefunden"
End If
End With
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile bei der Suche auslassen
24.03.2017 10:02:56
Michael
Hallo!
Also sauber ist der Code ja nicht gerade; da gäbe es einiges Aufzuräumen. Aber rein grds. zu Deiner Frage: Am einfachsten, ohne viel Verrenkungen, ist es wohl, den Suchbereich entsprechend einzugrenzen - Du suchst ja aktuell in der gesamten Spalte D; Du könntest aber genauso gut auch erst ab D12, bis zum Ende von D, suchen. Würde ich dann so schreiben (mit ein paar ersten kosmetischen Veränderungen in Deinem Code):
Sub Zeilemarkieren_Auftrag_aendern_Neu()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim WsStamm As Worksheet: Set WsStamm = Wb.Worksheets("Bestand")
Dim WsBearb As Worksheet: Set WsBearb = Wb.Worksheets("Aufträge Umsätze eingeben")
Dim DropDown As Range: Set DropDown = WsBearb.Range("B9")
Dim SuchBereich As Range, myRow, SuchBegriff
With WsStamm
.Activate
'SuchBereich eingrenzen auf D12:Dx, wobei x = letzte gefüllte Zelle in D
Set SuchBereich = .Range("D12:D" & .Cells(.Rows.Count, 4).End(xlUp).Row)
SuchBegriff = DropDown.Value
If IsNumeric(SuchBegriff) Then SuchBegriff = --SuchBegriff
myRow = Application.Match(SuchBegriff, SuchBereich, 0)
If Not IsError(myRow) Then
.Rows(myRow).Select
Else:
MsgBox SuchBegriff & "nicht gefunden!"
End If
End With
End Sub
LG
Michael
Anzeige
AW: Zeile bei der Suche auslassen
24.03.2017 10:27:28
Peter
Hallo Michael
bei deinem Code wird der gesuchte Wert überhaupt nicht gefunden und es wird die Zeile 2 markiert, obwohl diese leer ist. Wenn ich D12 durch D13 ersetze wird Zeile 1 markiert, die aber auch leer ist.
Gruss Peter
AW: Zeile bei der Suche auslassen
24.03.2017 10:34:19
ChrisL
Hi Peter
myRow = Application.Match(SuchBegriff, SuchBereich, 0) + 11
cu
Chris
AW: Zeile bei der Suche auslassen
24.03.2017 10:03:07
Daniel
Hi
du legst den Suchbereich über die Variable Namenssaplte fest.
hier darfst du dann eben nicht die ganze Spalte angeben, sondern nur den Zellbereich, der Durchsucht werden soll
Namenspalte = "D12:D" & Sheets(Stammdatensheet).Rows.Count
Gruß Daniel
Anzeige
AW: Zeile bei der Suche auslassen
24.03.2017 10:18:33
Daniel
noch ergänzend:
application.Match gibt dir die Positon der Fundstelle innerhalb des durchsuchten Bereichs und nicht die absolute Zeilennummer
dh wenn der gesuchte Begriff in Zeile 12 steht, wird dir Application.Match die 1 als Ergebnis liefern.
das musst du dann entsprechend berücksichtigen, wenn du die Fundstelle über die Zeilennummer ansprechen willst:
.Rows(myRow + 11).Select
oder:
.Range(Namensspalte).Cells(myRow, 1).EntireRow.Select
Gruß Daniel
AW: Zeile bei der Suche auslassen
24.03.2017 10:51:40
Peter
Mein Code sucht und markiert die Zeile mit dem gesuchten Wert, egal in welcher Zeile der Wert. Das funktioniert soweit einwandfrei. Die Suche beginnt wie beschrieben in Zeile, ich möchte aber das sie in Zeile 12 beginnt. Wenn ich nun "D:D" durch "D12:D" ersetze kommt Laufzeit bei " myRow = Application.Match(SuchBegriff, .Range(Namenspalte), 0)"
Gruss Peter
Anzeige
AW: Zeile bei der Suche auslassen
24.03.2017 11:01:15
Daniel
Hi
du hast da vergessen, die Endzeile mit anzugeben.
die Adresse muss entweder eine ganze Spalte sein "D:D" oder vom Typ "ZelleVon-ZelleBis", dh "D12:100000"
schau dir meinen ersten Beistrag noch mal an, dort füge ich die Zeilennummer der letzten Zeile auf dem Blatt hinzu:
"D12:D" & Sheets(Stammdatensheet).Rows.Count
Gruß Daniel
AW: Zeile bei der Suche auslassen
24.03.2017 10:20:48
ChrisL
Hi
Hier noch eine weitere Lösung:
Sub Zeilemarkieren_Auftrag_ändern()
Dim wksBestand As Worksheet, wksUmsatz As Worksheet
Dim rngDropdown As Range, rngSuchspalte As Range, rngTreffer As Range
Set wksBestand = ThisWorkbook.Worksheets("Bestand")
Set wksUmsatz = ThisWorkbook.Worksheets("Aufträge Umsätze eingeben")
Set rngDropdown = wksUmsatz.Range("B9")
Const strNamenspalte As String = "D"
With wksBestand
Set rngSuchspalte = .Range(.Range(strNamenspalte & "12"), _
.Cells(Rows.Count, strNamenspalte).End(xlUp))
Set rngTreffer = rngSuchspalte.Find(rngDropdown, LookIn:=xlValues)
If rngTreffer Is Nothing Then
MsgBox rngDropdown & " nicht gefunden"
Else
.Activate
.Rows(rngTreffer.Row).Select
End If
End With
End Sub

cu
Chris
Anzeige
AW: Zeile bei der Suche auslassen
24.03.2017 11:01:06
Peter
Hallo Chris
Dein Code funktioniert einwandfrei, genauso wie ich es wollte.
DANKE an Alle
Gruss Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige