Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Durchsuchen von Zeilen und Spalten mittels VBA

Durchsuchen von Zeilen und Spalten mittels VBA
05.06.2018 14:15:02
Zeilen
Hallo,
ich möchte mittels VBA die Spalte A nach einem Suchwort durchsuchen.
Wenn das Suchwort vorhanden ist soll es sich die Zeile merken.
Dann soll es ein anderes Suchwort in einer Zeile 1 suchen und sich von dieser die spalte merken.
In diese Zelle der Zeilen/Spalten Kombi der zwei Suchwörter soll dann etwas hineinkopiert werden.
Sollte das erste Suchwort nicht in der Spalte vorhanden sein soll es eine neue Zeile einfügen und das Suchwort in die Zell A der neuen Zeile einfügen, das zweite Suchwort wiederum in der Zeile 1 suchen und etwas in die neueZeile/gemerkte Spalte einfügen.
Hab schon ewig herumprobiert und mit einer For Each schleife nicht zu einem Funktionierendem Makro gekommen.
Kann mir jemand helfen?
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Durchsuchen von Zeilen und Spalten mittels VBA
05.06.2018 14:40:14
Zeilen
Hi
dim Zeile As Range
dim Spalte as Range
set Zeile = Columns(1).Find(what:="Suchwort1", lookat:=xlwhole, lookin:=xlvalues)
set Spalte = Rows(1).find(what:="Suchwort2", lookat:=xlwohle, lookIn:=xlvalues)
if Zeile is Nothing then
set Zeile = Cells(rows.count, 1).end(xlup).Offset(1, 0)
Zeile.Value = "Suchwort1"
end if
if Spalte is Nothing then
set Spalte = Cells(1, columns.count).End(xltoleft).Offset(0, 1)
Spalte = "Suchwort2
end if
?Etwas?.Copy
Intersect(Zeile.EntireRow, Zeile.EntireColum).PasteSpecial xlpastevalues

Anzeige
AW: Durchsuchen von Zeilen und Spalten mittels VBA
05.06.2018 15:08:50
Zeilen
Also mein Code sieht jetzt so aus, da etwas von einer Quelldatei in eine Zieldatei übertragen werden soll.
Allerdings gibt er mir bei Set Spalte und Set Zeile Befehlen Fehlermeldungen zurück.
An was liegt das?
Dim WBZiel As Workbook, ExportDatei As String
Dim WBQuelle As Workbook
Set WBQuelle = ThisWorkbook
Pfad = "C:.....Masterfile_150518"
Set WBZiel = Workbooks.Open(Pfad)
Dim QWS As Worksheet, ZWS As Worksheet, QWS2 As Worksheet, QWS3 As Worksheet, ZWS2 As Worksheet
Set QWS = WBQuelle.Worksheets("Allgemeine Probeninformationen")
Set QWS2 = WBQuelle.Worksheets("Diagramme")
Set QWS3 = WBQuelle.Worksheets("Druckversion_DE")
Set ZWS = WBZiel.Worksheets("Uebersicht")
Set ZWS2 = WBZiel.Worksheets("UCS")
Dim Zeile As Range
Dim Spalte As Range
Dim Suchwort1 As String
Dim Suchwort2 As String
Suchwort1 = QWS2.Range("L5")
Suchwort2 = "UCS"
Set Zeile = ZWS2.Columns(1).Find(what:="Suchwort1", lookat:=xlWhole, LookIn:=xlValues)
Set Spalte = ZWS2.Rows(1).Find(what:="Suchwort2", lookat:=xlwohle, LookIn:=xlValues)
If Zeile Is Nothing Then
Set Zeile = ZWS2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Zeile.Value = "Suchwort1"
End If
If Spalte Is Nothing Then
Set Spalte = ZWS2.Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1)
Spalte = "Suchwort2"
End If
QWS2.Range("M39").Copy
Intersect(Zeile.EntireRow, Zeile.EntireColum).PasteSpecial xlPasteValues
Anzeige
AW: Durchsuchen von Zeilen und Spalten mittels VBA
05.06.2018 15:27:04
Zeilen
Hi
du hast zwei Zeilen mit "Set Zeile".
es wäre also interessant zu wissen, in welcher Zeile der Fehler auftritt und wie genau die Fehlermeldung auftritt.
btw, wenn "Suchwort1" und "Suchwort2" Variablen sein sollen, dürfen sie nicht in Anführungszeichen stehen, sonst werden sie nicht als Variablen erkannt. Das .Find sucht dann nicht nach dem Inhalt der Variablen Suchswort1, sondern nach dem konkreten Text "Suchwort1".
Gruß Daniel
Anzeige
AW: Durchsuchen von Zeilen und Spalten mittels VBA
05.06.2018 21:39:15
Zeilen
Der Fehler tritt bei Set Spalte = ZWS2.Rows(1).Find.... auf. Es wird Index außerhalb des gültigen Bereich angezeigt.
Die Suchwörter2 sind entweder wörter wie UCS, E-Modul oder ähnliches und Suchwort 2 ist eine Probennummer wie zb. 0001_17_K03.
AW: Durchsuchen von Zeilen und Spalten mittels VBA
05.06.2018 23:17:24
Zeilen
schwer zu sagen.
wenn die Zeile drüber mit "Set Zeile = ..." funktioniert, dann vergleich mal beide Zeilen ganz genau, vielleicht hast du einen Tippfehler drin.
Verwendest du Option Explicit?
Wenn nein, solltest du das unbedingt tun.
warum und wieso steht hier: http://www.online-excel.de/excel/singsel_vba.php?f=4
gruß Daniel
Anzeige
AW: Durchsuchen von Zeilen und Spalten mittels VBA
06.06.2018 05:04:52
Zeilen
Hi Daniel,
Dein Code hat Korrekturbedarf:
Zeile 5: "xlwhole" statt "xlwohle"
Letzte Zeile: In "Zeile.EntireColum"
"EntireColumn" statt "EntireColum"
"Spalte" statt "Zeile"
Also
"Spalte.EntireColumn" statt "Zeile.EntireColum"
LGB
AW: Durchsuchen von Zeilen und Spalten mittels VBA
06.06.2018 11:44:54
Zeilen
Hey, vielen Dank für die Hilfe! Es funktioniert jetzt.
Nur leider habe ich noch ein kleines Problem..
Wenn Suchwort2 nicht gefunden wird, ist es nicht vorhanden. dann soll M39 nicht kopiert werden da dann die entsprechende Spalte fehlt.
wenn Suchwort2 nicht vorhanden ist bekomme ich jetzt nur eine Fehlermeldung das der intersect Befehl nicht funktioniert da Spalte Zeile nicht definiert werden konnte.
So sieht der Code jetzt aus:
Dim WBZiel As Workbook, ExportDatei As String
Dim WBQuelle As Workbook
Set WBQuelle = ThisWorkbook
Pfad = "C:\Users\---\Desktop\Masterfile_150518"
Set WBZiel = Workbooks.Open(Pfad)
Dim QWS As Worksheet, ZWS As Worksheet, QWS2 As Worksheet, QWS3 As Worksheet, ZWS2 As Worksheet
Set QWS = WBQuelle.Worksheets("Allgemeine Probeninformationen")
Set QWS2 = WBQuelle.Worksheets("Diagramme")
Set QWS3 = WBQuelle.Worksheets("Druckversion_DE")
Set ZWS = WBZiel.Worksheets("Uebersicht")
Set ZWS2 = WBZiel.Worksheets("UCS")
Dim Zeile As Range
Dim Spalte As Range
Dim Suchwort1 As String
Dim Suchwort2 As String
Suchwort1 = QWS2.Range("L5")
Suchwort2 = "UCS"
Set Zeile = ZWS2.Columns(1).Find(what:=Suchwort1, lookat:=xlWhole, LookIn:=xlValues)
Set Spalte = ZWS2.Rows(1).Find(what:=Suchwort2, lookat:=xlWhole, LookIn:=xlValues)
If Zeile Is Nothing Then
ZWS2.Rows(4 + 1).Insert
Set Zeile = ZWS2.Cells(5, 1)
Zeile.Value = Suchwort1
End If
If Spalte Is Nothing Then
MsgBox "Fehler! Suchwort2 nicht vorhanden", vbInformation + vbOKOnly, "Info"
End If
QWS2.Range("M39").Copy
Intersect(Zeile.EntireRow, Spalte.EntireColumn).PasteSpecial xlPasteValues
End Sub
Anzeige
AW: Durchsuchen von Zeilen und Spalten mittels VBA
06.06.2018 13:50:03
Zeilen
Habs mit einem GoTo Befehl gelöst! Aber noch einmal vielen Dank für eure Hilfe!
AW: Durchsuchen von Zeilen und Spalten mittels VBA
06.06.2018 14:03:52
Zeilen
Hi
dann musst du die ganze Abfrage staffeln:
- zuerst prüfen, ob Suchwort2 gefunden wurde und wenn nein, Meldung ausgeben und nichts machen
- dann prüfen, ob Suchwort1 gefunden wurde und wenn nein, dieses ergänzen
- Wert eintragen
hierbei ist auf die richtig Anordnung der Befehle in die IF-Then-Struktur zu achten:
...
Suchwort1 = QWS2.Range("L5")
Suchwort2 = "UCS"
Set Spalte = ZWS2.Rows(1).Find(what:=Suchwort2, lookat:=xlWhole, LookIn:=xlValues
If spalte is Nothing then
MsgBox "Fehler! Suchwort2 nicht vorhanden", vbInformation + vbOKOnly, "Info"
Else
Set Zeile = ZWS2.Columns(1).Find(what:=Suchwort1, lookat:=xlWhole, LookIn:=xlValues)
If Zeile is Nothing then
ZWS2.Rows(4 + 1).Insert
Set Zeile = ZWS2.Cells(5, 1)
Zeile.Value = Suchwort1
end if
QWS2.Range("M39").Copy
Intersect(Zeile.EntireRow, Spalte.EntireColumn).PasteSpecial xlPasteValues
end if

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilen und Spalten in Excel mit VBA durchsuchen


Schritt-für-Schritt-Anleitung

Um mit VBA in Excel eine Zeile oder Spalte nach einem bestimmten Suchwort zu durchsuchen, kannst du folgendes Verfahren verwenden:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf VBAProject (DeineDatei.xlsx) und wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Sub Durchsuchen()
       Dim WBZiel As Workbook
       Dim WBQuelle As Workbook
       Dim ZWS2 As Worksheet
       Dim Zeile As Range
       Dim Spalte As Range
       Dim Suchwort1 As String
       Dim Suchwort2 As String
    
       Set WBQuelle = ThisWorkbook
       Set WBZiel = Workbooks.Open("C:\Dein\Pfad\Zur\Datei.xlsx")
       Set ZWS2 = WBZiel.Worksheets("UCS")
    
       Suchwort1 = "DeinSuchwort1"
       Suchwort2 = "DeinSuchwort2"
    
       ' Suche nach dem ersten Suchwort in der ersten Spalte
       Set Zeile = ZWS2.Columns(1).Find(what:=Suchwort1, lookat:=xlWhole, LookIn:=xlValues)
    
       ' Suche nach dem zweiten Suchwort in der ersten Zeile
       Set Spalte = ZWS2.Rows(1).Find(what:=Suchwort2, lookat:=xlWhole, LookIn:=xlValues)
    
       ' Überprüfe, ob die Zeile gefunden wurde
       If Zeile Is Nothing Then
           Set Zeile = ZWS2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
           Zeile.Value = Suchwort1
       End If
    
       ' Überprüfe, ob die Spalte gefunden wurde
       If Spalte Is Nothing Then
           MsgBox "Fehler! Suchwort2 nicht vorhanden", vbInformation + vbOKOnly, "Info"
       Else
           ' Führe den Kopiervorgang durch
           QWS2.Range("M39").Copy
           Intersect(Zeile.EntireRow, Spalte.EntireColumn).PasteSpecial xlPasteValues
       End If
    End Sub
  4. Führe das Makro aus:

    • Gehe zurück zu Excel und führe das Makro über Entwicklertools > Makros aus.

Häufige Fehler und Lösungen

  • Fehlermeldung: Index außerhalb des gültigen Bereichs:

    • Überprüfe, ob die Suchwörter tatsächlich in den angegebenen Zeilen oder Spalten vorhanden sind.
  • Fehler bei der Verwendung von Variablen:

    • Stelle sicher, dass die Suchwörter nicht in Anführungszeichen stehen, wenn sie Variablen sein sollen.
  • Tippfehler im Code:

    • Achte auf korrekte Schreibweise, z.B. xlWhole anstelle von xlwohle.

Alternative Methoden

Eine alternative Möglichkeit ist die Verwendung von For Each-Schleifen, um jede Zelle in einer bestimmten Zeile oder Spalte zu durchsuchen. Hier ist ein Beispiel:

Dim Zelle As Range
For Each Zelle In ZWS2.Columns(1).Cells
    If Zelle.Value = Suchwort1 Then
        ' Aktion durchführen
    End If
Next Zelle

Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie du die Find-Methode in einer Funktion nutzen kannst, um die Cells(Zeile, Spalte)-Funktion zu verwenden:

Function SucheUndKopiere(Suchwort1 As String, Suchwort2 As String) As Boolean
    Dim Zeile As Range
    Dim Spalte As Range

    Set Zeile = ZWS2.Columns(1).Find(what:=Suchwort1)
    Set Spalte = ZWS2.Rows(1).Find(what:=Suchwort2)

    If Not Zeile Is Nothing And Not Spalte Is Nothing Then
        QWS2.Range("M39").Copy
        Intersect(Zeile.EntireRow, Spalte.EntireColumn).PasteSpecial xlPasteValues
        SucheUndKopiere = True
    Else
        SucheUndKopiere = False
    End If
End Function

Tipps für Profis

  • Verwende Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert werden, was dir hilft, Tippfehler zu vermeiden.
  • Nutze Fehlerbehandlung mit On Error Resume Next, um Probleme während der Ausführung des Codes zu minimieren.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Suchwörter gleichzeitig durchsuchen? Du kannst das Find-Kommando in einer Schleife verwenden, um mehrere Suchwörter zu überprüfen.

2. Was mache ich, wenn das Suchwort nicht gefunden wird? Du kannst eine If-Abfrage nutzen, um eine entsprechende Meldung anzuzeigen oder eine neue Zeile einzufügen, wie im Beispiel gezeigt.

3. Welche Excel-Version benötige ich für diesen VBA-Code? Der VBA-Code sollte in den meisten modernen Excel-Versionen (Excel 2010 und später) funktionieren. Achte darauf, dass die Makros in deiner Datei aktiviert sind.

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