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

VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)

Forumthread: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)

VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 00:54:04
UdoVBA
Ich suche mittels VBA in einer Tabelle nach einem Begriff, der in der Tabelle vorkommt.
Ziel ist es, die Zeile zu ermitteln, in welcher der Begriff gefunden wird.
Das funktioniert prima, solange der Suchbegriff in einer einzelnen Zelle vorkommt: Diese Zelle wird gefunden und mit .row kann die die Zeile ermittelt werden.

Wenn nun aber der Suchbegriff in einer verbundenen Zelle steht (z.B. C3+C4), versagt die .row Methode und liefert Laufzeitfehler 91.
Es ist reproduzierbar: löse ich die verbundenen Zellen wieder einzelne Zellen auf, so dass der Suchbegriff nur noch in C3 steht, funktioniert mit VBA alles wieder.
Es muss also damit zusammenhängen, dass die Suche über VBA den Suchbegriff in einer verbundenen Zelle findet und für dieses Ergebnis die .row Methode nicht zulässig ist.

Ergänzung: Suche ich ohne VBA manuell in der Tabelle, werden auch verbundene Zellen problemlos gefunden und markiert.

Hat jemand ein Idee?
Anzeige

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 01:24:21
Kuwer
Hallo,

ich verstehe Dein Problem nicht:

Sub Makro1()


Range("C3").Value = "Hallo"
Range("C3").Resize(2, 1).Merge
Debug.Print Range("C3").MergeArea.Address
Debug.Print Cells.Find(What:="Hallo", LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False, SearchFormat:=False).Row
Range("C3").MergeArea.UnMerge
Debug.Print Range("C3").MergeArea.Address
Debug.Print Cells.Find(What:="Hallo", LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False, SearchFormat:=False).Row

End Sub


Gruß, Uwe
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 02:06:40
Onur
Was zum Henker ist denn die " .row Methode"???
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 05:00:54
GerdL
Hallo Udo,

der Laufzeitfehler 91 tritt auf, wenn der Suchbegriff nicht gefunden wird.

Ggf. hilft es das %-Zeichen darin wegzulassen; ganz abgesehen von
der fehlenden Zuweisung der Find-Methode mit der Set-Anweisung u. Aktivierung der Fundstelle
erst nach der Prüfung auf Nothing.

Gruss Gerd
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 11:27:48
daniel
Hi
es gibt Methoden, die funktionieren mit verbundenen Zellen nur dann, wenn man sie auf den ganzen Zellverbund anwendet, das dürfte auch für die Abfrage der Zeilennummer so sein (.Row)
Wenn du von Hand die Zelle auswählst, selektiert Excel immer automatisch den Zellverbund.
Wenn du aber in VBA einzelne Zellen ermittelst, dann nicht.

Um von einer Einzelzelle, die sich in einem Zellverbund befindet, auf den ganzen Zellverbund zu kommen, gibt es den Befehl .MergeArea

wenn also die Zellen C3+C4 verbunden sind, dann liefert Range("C3").MergeArea den dazugehörigen Zellverbund als Range.
damit sollte dann auch dein .Row funktionieren.

Gruß Daniel
Anzeige
AW: Ersatz_fuer_horizontale_Verbundzellen
04.03.2025 14:00:29
GerdL
Sub Ersatz_fuer_horizontale_Verbundzellen()


With Range("B4:C4")
.HorizontalAlignment = xlCenterAcrossSelection
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("B4") = "Hallo Welt"

End Sub



Gruss Gerd
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 18:02:56
Piet
Hallo, an Alle Kollegen

ich bin sicher nicht dumm, programmiere seit vielen Jahren, aber das ist ein - amüsant seltsamer Effekt.
Hat einer der Kollegen eine -logische- Erklärung dafür. --> Testet es bitte mal selbst mi Makro Recorder.

Weil ich einen Code mit Set Anweisung hochladen wollte, sagte mir eine innere Stimme - ihn vorher zu testen!!
Dabei wurde mit der Find Methode die 1. Zelle gefunden wenn mehrere Zeilen verbunden sind, aber KEINE Spalten!
Ich schalte daraufhin den Makro Recorder ein, und war völlig überrascht. -- Der findet auch verbundene Zellen!!

Das ist der aufgezeichnete Code dazu. Lasse ich danach Makro1 mit F5 laufen kommt es zum Laufzeitfehler!!
Wieso findet Excel die verbundenen Zellen problemlos, kann aber den aufgezeichneten Code nicht wiederholen?
Testet das bitte mal auf eurem Rechner, ic habe Excel 2016 installiert. -- Was ist euer Test Ergebniss??
Das ist mir im Augenblick echt zu hoch?? -- Ist das ein verspäteter "Karnevals Gag"?? -- Tätät, tätä .....

mfg Piet



Sub Makro1()
Range("D1").Select
Cells.Find(What:="Test VB", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
End Sub

Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 18:13:34
Onur
Ich glaube, du hast da einen Denkfehler.
Bei mir läuft der Code problemlos (ausser natürlich, man befindet sich NICHT auf dem entsprechenden Blatt, da das Makro keinerlei Blattreferenzierung hat und sich in einem allg. Modul steht)
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 18:18:42
Onur
Ich verstehe auch nicht, warum das bei verbundenen Zellen NICHT laufen sollte. Wenn man A10 und A11 verbindet und in A10 "X" reinschreibt, ist für Excel in A10 ein "X" drin und A11 ist leer. Punkt.
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 18:39:22
Piet
Hallo Onur

der Code läuft bei mir auch bei verbundenen Zellen wie A10 + A11.
Verbinde bitte mal A10:C10 und teste damit. Da habe ich Laufzeitfehler.
Oder -KEIN Ergebnis- mit Set Anweisung, wo man ja den Fehler abfangen kann!

Seltsamerweise bekomme ich aber ein Ergebnis beim Makrorecorder über manuelle Dialogsuche!
Lasse ich den aufgezeichneten Code ablaufen habe ich wieder Laufzeitfehler!! Warum??
Dieser Effekt ist mir zu hoch, am Code unterscheidet sich doch NICHTS!!

mfg Piet
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 18:48:30
Onur
Kein Problem, ausser wie gesagt, wenn ActiveSheet nicht das Blatt mit der verbundenen Zelle ist.
Verstehe nicht, was du da machst.
Poste doch mal deine Datei - vielleicht reden wir aneinander vorbei.
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 20:37:16
Piet
Hallo Onur

ich habe dir mal meine Testdatei hochgeladen. Es gibt 5 Makros. 3 liegen auf den Buttons.
Egal was ich probiert habe, bei verbundenen Spalten gab es immer Laufzeitfehler.
Außer der Version Makro5, da wird ein xlDialogSuchen gestartet. Bei dem klappt es!

Ich bin gespannt was du herausfindest. Könnte der Effekt bei deiner Version nicht vorkommen??
Ich habe Excel 2016, wie du sicher am Dateiformat erkennst. Excel 16.0 als Programm.
https://www.herber.de/bbs/user/176123.xlsm

mfg Piet
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 21:00:58
Onur
Hallo Piet,

Sorry, muss dich enttäuschen

Makro1: B5 wird ausgewählt
Makro2: B5 wird ausgewählt
Makro3: B5 wird ausgewählt
Makro4: MsgBox "(Zeile) 5"
Makro2: Das übliche "Suchen"-Fenster öffnet sich und findet B5 und dann MsgBox "(Zeile) 5".
Makro "Version": Ausgabe "16.0"

Die genau Version bekommst du aber nur mit
xxx = CreateObject("Scripting.FileSystemObject").GetFileVersion(Application.Path & "\EXCEL.exe")


Gruß
Onur

Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 21:04:55
Onur
Und wenn ich den Text in B5 lösche, passiert exakt das Selbe, nur mit 10 bzw D10.
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 21:20:19
Onur
Wie genau sieht denn das "Suchen"-Fenster bei dir aus, wenn es sich öffnet?
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 23:30:41
Piet
Hallo Onur

Danke für deinen Code, damit erscheint die Excel Version: 16.0.5487.1000
Bei dieser Version ist und bleibt ein Laufzeitfehler, aber NUR bei verbundenen Spalten.
Kann also sein das es an meiner Programm Version liegt. Man lernt ja nie aus ....

Der xlDialog stammt aus einer uralten Liste die ich 2001 über Index selbst erstellt habe.
Da gab es den xlDialog Suchen -OHNE- Suchen und Ersetzen. Ich lade sie mal hoch.
https://www.herber.de/bbs/user/176127.xls

mfg Piet
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
05.03.2025 00:51:09
Onur
DAS meinte ich gar nicht - ich wollte nur einen Screenshot von dem Dialog - so wie es aussieht, wenn du STRG-F drückst..
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
05.03.2025 03:07:27
Piet
Hallo Onur

hier der Screenshot
Userbild

mfg Piet
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
05.03.2025 03:24:52
Onur
Du weisst ja, dass, wenn du .Find ohne Parameter benutzt, die Parameter automatisch so gesetzt werden wie beim letzten Mal, als du STRG-F benutzt hattest.
Daran kann es nicht liegen?
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
05.03.2025 14:55:54
Piet
Hallo Onur

ich habe alle Varianten ausprobiert, auch mit False und True. -- Du meine Güte, ich habe den Fehler gefunden!!!

Weil du gefragt hast, ob ich alle Varianten durchgespielt habe, habe ich jetzt alles noch mal getestet.
Halte dich fest! --> Der Fehler ist sowas von Simpel, ich bin sprachlos! -- Ist aber für Excel sehr logisch!!

Getestet habe ich mit True, False, xlWhole, xlPart, und xlPrevious, Rückwärtssuche. Immer gleicher Effekt.
Verwende ich aber statt -xlByColumns- den Befehl -xlByRows- arbeitet Excel einwandfrei!!

Was sagst du dazu??
So eine Kleinigkeit macht den Unterschied. Aber, wir haben es gemeinsam aufgedeckt.

mfg Piet
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 18:08:25
Piet
Hallo

ich habe noch einen amüsanten Effekt, wo ich mich frage warum es sooo funktioniert???
Ob Udo das aber weiterhilft wieß ich nicht? - Aber amüsant ist es mal auszuprobieren!
Mit dem Code kann man die Zelle anspringen und die Row auslesen. OHNE MergeArea!

mfg Piet

Sub Makro3()

Application.Dialogs(xlDialogFormulaFind).Show "Test VB"
MsgBox ActiveCell.Row
End Sub
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 02:14:22
UdoVBA
Sorry: Eigenschaft waere hier wohl der richtige Begriff.
.row liefert die Zeilennummer einer Zelle
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 02:24:13
Onur
Und wozu hast du jetzt das BILD gepostet?
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 02:40:02
UdoVBA
Das Bild zeigt die Situation:
Die Zeile Cells.Find(.....) funktioniert einwandfrei, wenn die den Suchbegriff enthaltene Zelle alleine steht, also NICHT mit einer anderen Zelle verbunden ist.
Sobald die den Suchbegriff enthaltende Zelle aber mit einer anderen Zelle verbunden ist (z.B. die rechts daneben), kommt die gezeigte Fehlermeldung.
Ich kann leider nicht verhindern, dass unsere Anwender manchmal Zellen verbinden.
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 02:46:22
Onur
Das Bild sagt mir aber nicht, in WELCHER Zeile des Codes der Fehler ist..... Man sieht nur etliche Zeilen Code und eine Fehlermeldung ohne Codebezug (gelbe Markierung).
Wahrscheinlich wegen dem "On Error".
Deaktiviere mal in den Optionen die Fehlerbehandlung und du siehst, WO der Fehler ist.
Warum postest du nicht endlich mal eine Datei dazu, damit die Herumraterei und Fragerei aufhört ?
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 01:44:22
UdoVBA
Vielen Dank schon mal für die spaete Antwort.
Habe Deinen Code ausprobiert: Laeuft und liefert jedesmal 3 als Ergebnis, so wie das sein soll.
Unterschied zu meiner Anwendung: in meiner Tabelle sind die Zellen horizontal miteinander verbunden (bei Dir vertikal).
Habe den Code entsprechend geändert: läuft auch! Verflixt!
Ich bereite mal meinen Code etwas auf und poste diesen...
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 01:52:34
UdoVBA
Cells.Find(What:=SearchToken, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate

Zeile = ActiveCell.Row

geht bei mir genauso wenig wie direkt:

Zeile = Cells.Find(What:=SearchToken, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Row

SearchToken ist übrigens "%Title"
Anzeige
AW: VBA Behandlung verbundener Zellen bei Suche (Laufzeitfehler)
04.03.2025 02:06:24
UdoVBA
Userbild
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18