Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

flexible Range in Find

Forumthread: flexible Range in Find

flexible Range in Find
04.02.2022 10:55:23
StefanH
Hallo zusammen,
ist es möglich bei der Find-Methode über VBA nicht zusammenhängende Spalten der gleichen Zeile zu prüfen ob etwas vorhanden ist?
Also "falsch" dargestellt einmal so:

If Not Tabelle2.range(Cells(lzeile, lspalte(1)), Cells(lzeile, lspalte(2)), Cells(lzeile, lspalte(3)), Cells(lzeile, lspalte(4))).Find("X") Is Nothing Then
Die Variablen weise ich zuvor schon einem Wert zu, bei lspalte(1-4) sind die Werte 5-14 möglich.
So wie ich es geschrieben habe, funktioniert es natürlich nicht, ich dachte vllt das es so funktionieren könnte:

strRng = Array(Cells(lzeile, lspalte(1)), Cells(lzeile, lspalte(2)), Cells(lzeile, lspalte(3)), Cells(lzeile, lspalte(4)))
If Not Tabelle2.Range(strRng).Find("X") Is Nothing Then
Code wenn "X" vorhanden
End If
Hätte jemand eine Idee wie ich das umsetzten kann um nicht jede Spalte einzeln abfragen zu müssen?
Herzlichen Dank im Vorraus und
Grüße
StefanH
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: flexible Range in Find
04.02.2022 11:22:18
Piet
Hallo
strRng = Cells(lzeile, lspalte(1).Resize(1, 4) - Resize(1,4) vergrössert den Spaltenbereich auf 4 Spalten. Resize(4,1) verlängert die Zeilen nach unten! Probier es mal damit.
mfg Piet
AW: flexible Range in Find
04.02.2022 11:26:07
Stefan
Hallo Piet,
danke schonmal für den Code.
Er funktioniert bei mir leider nicht.
Ich vermute auch erst ist eher dafür ausgelegt, wenn die Spalten nebeneinander liegen.
Es kann aber auch so sein:
lspalte(1) = 6
lspalte(2) = 7
lspalte(3) = 10
Ich werd die Datei mal anonymisieren und hochladen.
Grüße
Stefan
Anzeige
noch die Datei
04.02.2022 11:31:53
Stefan
Ging schneller als gedacht:
https://www.herber.de/bbs/user/150874.xlsm
Der code ist im Modul "DatenÜbernehmenUndSpeichern" als Sub "Kopieren_Nach_Maschine"
Ich hoff man kann den Code einigermaßen nachvollziehen.
Normalerweise öffnet sich bei Start direkt die UF"Maschine_Wählen", zum besseren reinkommen hab ich das auskommentiert.
Gruß
Stefan
Anzeige
AW: flexible Range in Find
04.02.2022 11:37:56
GerdL
Moin Stefan,
es ist schöner, erst zu suchen u. danach das Ergebnis auszuwerten.
Die Range-Find-Methode hat einige weitere Argumente, die man einstellen sollte (after:= .., lookat:=.., lookin:= ...matchcase:= ..)
denn sie könnten im Dialog Suchen "verstellt" werden.
Einige Beispiele für die Bildung eines heterogenen Bereichs:

Dim rngBereiche As Range, rngCell As Range
Set rngBereiche = Union(Tabelle1.Cells(5, 1), Tabelle1.Cells(5, 3), Tabelle1.Cells(5, 4), Tabelle1.Cells(5, 8))
Set rngBereiche = Tabelle1.Range("A5,C5:D5,H5")
Set rngBereiche = Intersect(Tabelle1.Rows(5), Tabelle1.Range("A:A,C:D,H:H"))
'Set rngCell = rngBereiche.Find(.....)
'If Not objCell Is Nothing Then
'machwas
'End If
Gruß Gerd
Anzeige
gelöst
04.02.2022 12:20:44
Stefan
Hallo Gerd,
herzlichen Dank. auch für die Erklärung.
Genau nach dem hab ich gesucht, funktioniert einwandfrei.
Ich wünsche dir noch ein schönes Wochenende :)
Gruß
Stefan
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige