Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Find bei verbunden Zellen
#1
Hallo wertes Forum,

ich habe ein Problem bei der Suche nach einem Text.
Folgende Situation:
Ich habe einen größeren Report, in dem der Übersichtlichkeit halber Überschriften in verbundenen Zellen stehen habe.
Das ist ganz praktisch, da der Report zusätzlich gruppierte Spalten hat und damit die Spaltenüberschrift immer sichtbar ist, egal ob Spalten ein- oder ausgeblendet sind.

Jetzt suche ich aber genau nach den Texten in diesen verbundenen Zellen, um mein Makro im Report in den richtigen Spalten etwas schreiben zu lassen.
Code:
    IntZeileKopf = .Cells.Find(What:="Mitarbeiter nach Tätigkeit", After:=ActiveCell, LookIn:=xlValues, LookAt _
        :=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row

Das führt natürlich zum Laufzeitfehler 91 (Objektvariable oder With-Blockvariable nicht festgelegt).
Auf der Suche nach einer Lösung habe ich gefunden, dass des .Cells durch .Range ersetzt werden soll.
Code:
    IntZeileKopf = .Range.Find(What:="Mitarbeiter nach Tätigkeit", After:=ActiveCell, LookIn:=xlValues, LookAt _
        :=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row
führt aber zum Fehler beim Kompilieren (Argument ist nicht optional).

Wie löse ich das am Besten? Auf die verbundenen Zellen möchte ich eigentlich nicht verzichten, das es wie beschrieben am übersichtlichsten ist.

Vielen Dank für Eure Hilfe,
Lutz
Antwortento top
#2
Hallo,

zeige bitte eine Beispieldatei.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antwortento top
#3
Hallo Klaus-Dieter,

anbei die Datei und der Code
Code:
Public Sub A_Ausgabe()

Dim IntZeileKopf As Integer, IntSpalteCompletedOrders As Integer
Dim IntLetzteZeileAusgabe As Integer, IntZeileAusgabe As Integer
Dim RngAusgabe As Range

Dim WkbAusgabe, WksTag

Set WkbAusgabe = ThisWorkbook
Set WksTag = WkbAusgabe.Worksheets("Tagesansicht")

With WksTag
    .Outline.ShowLevels ColumnLevels:=3
   
    IntZeileKopf = .Cells.Find(What:="Mitarbeiter nach Tätigkeit", After:=ActiveCell, LookIn:=xlValues, LookAt _
        :=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row
    IntSpalteCompletedOrders = .Cells.Find(What:="Completed Process Orders", After:=ActiveCell, LookIn:=xlValues, LookAt _
        :=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Column
    IntLetzteZeileAusgabe = .UsedRange.SpecialCells(xlCellTypeLastCell).Row

    Set RngAusgabe = .Cells(IntLetzteZeileAusgabe + 1, 1)
End With

End Sub
Gruß,
Lutz


Angehängte Dateien
.xlsx   Beispiel Find verbunden Zellen.xlsx (Größe: 48,79 KB / Downloads: 1)
Antwortento top
#4
Hallo,

schau Dir mal unten den Code an, vielleicht kannst Du Deinen dann anpassen.
Melde Dich bei Erfolg oder Misserfolg.

Code:
Sub SUCHEN()
   Dim IntZeileKopf As Range
   With Sheets("Tabelle1").Range("A1:C1")
       Set IntZeileKopf = .Find("Mitarbeiter nach Tätigkeit", LookIn:=xlValues, LookAt _
           :=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
   End With
   
   If Not IntZeileKopf Is Nothing Then
      MsgBox "Fund in Zeile: " & IntZeileKopf.Row & " Spalte " & IntZeileKopf.Column
   Else
      MsgBox "Kein Ergebnis bei der Suche!"
   End If

End Sub
Gruß Atilla
[-] Folgende(r) 1 Benutzer sagt Danke an atilla für diesen Beitrag:
  • Lutz Fricke
Antwortento top
#5
Hallo,

das habe ich nicht verstanden. Genau genommen stehen deine Überschriften in Spalte C2 und in Spalte Z2. Die kannst du doch direkt adressieren. Falls du die Überschriften in Zeile 3 meinen solltest, vertsehe ich den Zusammenhang mit den verbundenen Zellen nicht.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antwortento top
#6
Hallo atilla,

vielen Dank für den Tip.
Dein Code lief und auf der Suche nach dem Warum habe ich .Cells durch .UsedRange ersetzt und läuft 19 .


Hallo Klaus-Dieter,

da mein Chef seine Reports immer mal wieder angepasst haben möchte, kann hier und da mal ne Spalte dazukommen oder weggelassen werden. Und durch die Suche nach gewissen Überschriften, erspare ich mir dann das Anpassen der jeweiligen Adressen.

Guß,
Lutz
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste