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

Forumthread: VBA - gezieltes Suchen, Kopieren und Einfügen

VBA - gezieltes Suchen, Kopieren und Einfügen
04.11.2014 17:08:19
Kristina
Hallo zusammen,
ich bin ein kompletter Anfänger was VBA und Makros betrifft. Ich habe nun schon eine Weile nach einem entsprechenden Quellcode oder einer Anleitung im Internet gesucht, jedoch leider ohne Erfolg.
Folgendes möchte ich machen. Ich habe eine Tabelle mit einem Tabellenblatt 1,2,3 und 4. Aus dem Tabellenblatt 3 möchte ich nun die Spalte E (Zeile 10-150) durchsuchen nach dem Wort "manual". Aus den Zeilen, wo das Wort "manual" gefunden wird sollen dann die Werte aus den Spalten A,B,C,D,F,G,H,I,J,K,L,M,N,O kopiert werden in das Tabellenblatt 4 und zwar in die Spalten A-N, angefangen in Zeile 3.
Kann mir irgendjemand helfen? Und wie bringe ich den Quellcode in Excel 2013 mit VBA dann zum laufen? Wie speicher ich ihn und wie wende ich ihn an?
Ich bin für jegliche Hilfe dankbar!

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - gezieltes Suchen, Kopieren und Einfügen
04.11.2014 17:43:22
Matze
Hallo Kristina,
kannst/darfst du diese Datei hier einstellen oder mach eine Musterdatei des Aufbaus und stell die hier ein, dann kann man das dort gleich einbauen so wie du es haben möchtest.
Gruß Matze

AW: VBA - gezieltes Suchen, Kopieren und Einfügen
04.11.2014 17:47:56
Crazy
Hallo Kristina
das könnte so gehen
Option Explicit
Sub kopieren()
Dim Suchergebnis As Range
Dim lngZielZeile As Long
Dim Suchwert As String
Dim lngZaehler As Long
Dim firstAddress
Dim intSpalte As Integer
lngZielZeile = 3
Suchwert = "manual"
lngZaehler = 0
With Sheets("Tabelle3")
Set Suchergebnis = .Range("E10:E150").Find(Suchwert, LookIn:=xlValues, lookat:=xlWhole)
If Not Suchergebnis Is Nothing Then
firstAddress = Suchergebnis.Address
Do
For intSpalte = 1 To 4
Sheets("Tabelle4").Cells(lngZielZeile, intSpalte) = .Cells(Suchergebnis.Row, _
intSpalte)
Next
For intSpalte = 5 To 14
Sheets("Tabelle4").Cells(lngZielZeile, intSpalte) = .Cells(Suchergebnis.Row, _
intSpalte + 1)
Next
lngZielZeile = lngZielZeile + 1
lngZaehler = lngZaehler + 1
Set Suchergebnis = .Range("E10:E150").FindNext(Suchergebnis)
Loop While Not Suchergebnis Is Nothing And Suchergebnis.Address  firstAddress
MsgBox "Es wurden zum Suchwert " & Suchwert _
& vbCrLf & lngZaehler & " Datensätze kopiert"
Else
MsgBox "Kein Eintrag"
End If
End With
End Sub

um den Code einzufügen, drückst du Alt und F11
in dem Fenster das dann aufgeht sollte auf der linken Seite der Projektexplorer zu sehen sein
in der oberen Zeile steht "Einfügen" dort fügst du dann zu deinem Projekt ein Modul hinzu
das Modul wird dann wahrscheinlich Modul1 heißen
in dieses Modul kopierst du den Code
dann wechselst du wieder in deine Exceltabelle und erstellst dann eine Schaltfläche
dieser Schaltfläche weist du dann das Makro zu
MfG Tom
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

VBA - Gezieltes Suchen, Kopieren und Einfügen in Excel


Schritt-für-Schritt-Anleitung

Um in Excel mit VBA gezielt nach einem Begriff zu suchen und die entsprechenden Werte zu kopieren, folge dieser Anleitung:

  1. Öffne Excel und lade die Datei, in der du arbeiten möchtest.

  2. Drücke Alt + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Klicke im Projektexplorer mit der rechten Maustaste auf dein Projekt.
    • Wähle Einfügen und dann Modul.
  4. Kopiere den folgenden Code in das Modul:

    Option Explicit
    Sub kopieren()
       Dim Suchergebnis As Range
       Dim lngZielZeile As Long
       Dim Suchwert As String
       Dim lngZaehler As Long
       Dim firstAddress
       Dim intSpalte As Integer
       lngZielZeile = 3
       Suchwert = "manual"
       lngZaehler = 0
    
       With Sheets("Tabelle3")
           Set Suchergebnis = .Range("E10:E150").Find(Suchwert, LookIn:=xlValues, lookat:=xlWhole)
           If Not Suchergebnis Is Nothing Then
               firstAddress = Suchergebnis.Address
               Do
                   For intSpalte = 1 To 4
                       Sheets("Tabelle4").Cells(lngZielZeile, intSpalte) = .Cells(Suchergebnis.Row, intSpalte)
                   Next
                   For intSpalte = 5 To 14
                       Sheets("Tabelle4").Cells(lngZielZeile, intSpalte) = .Cells(Suchergebnis.Row, intSpalte + 1)
                   Next
                   lngZielZeile = lngZielZeile + 1
                   lngZaehler = lngZaehler + 1
                   Set Suchergebnis = .Range("E10:E150").FindNext(Suchergebnis)
               Loop While Not Suchergebnis Is Nothing And Suchergebnis.Address <> firstAddress
               MsgBox "Es wurden zum Suchwert " & Suchwert & vbCrLf & lngZaehler & " Datensätze kopiert"
           Else
               MsgBox "Kein Eintrag"
           End If
       End With
    End Sub
  5. Schließe den VBA-Editor und kehre zurück zu Excel.

  6. Erstelle eine Schaltfläche, um das Makro auszuführen:

    • Gehe zu Entwicklertools > Einfügen und wähle eine Schaltfläche aus.
    • Weisen das Makro kopieren der Schaltfläche zu.
  7. Klicke auf die Schaltfläche, um das Makro auszuführen.


Häufige Fehler und Lösungen

  • Fehler: "Kein Eintrag"

    • Stelle sicher, dass das Wort "manual" korrekt in der Spalte E (Zeilen 10-150) der Tabelle 3 eingetragen ist.
  • Fehler: "Laufzeitfehler"

    • Vergewissere dich, dass die Tabelle 3 und Tabelle 4 existieren und die Spalten A-N in Tabelle 4 ausreichend Platz bieten.

Alternative Methoden

Anstelle von VBA kannst du auch die Such- und Filterfunktionen in Excel nutzen:

  1. Wähle die Daten in Tabelle 3 aus.
  2. Verwende das Menü Daten > Filter, um die Spalte E nach "manual" zu filtern.
  3. Kopiere die gefilterten Daten manuell in Tabelle 4.

Diese Methode ist besonders nützlich, wenn du keine VBA-Kenntnisse hast oder nur gelegentlich Suchen und Kopieren in Excel durchführen möchtest.


Praktische Beispiele

Stellen wir uns vor, du hast folgende Daten in Tabelle 3:

A B C D E
1 Test Beispiel Daten manual
2 Test2 Beispiel2 Daten2 manual
3 Test3 Beispiel3 Daten3 kein

Nach dem Ausführen des Makros werden die ersten beiden Zeilen in Tabelle 4 kopiert.


Tipps für Profis

  • Nutze die Fehlerbehandlung in deinem VBA-Code, um mit unerwarteten Situationen umzugehen.
  • Experimentiere mit Suchfunktionen wie FindNext, um komplexere Suchkriterien zu implementieren.
  • Halte deinen Code sauber und gut kommentiert, um die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich den Suchwert im Code ändern?
Ändere die Zeile Suchwert = "manual" in den gewünschten Suchbegriff.

2. Funktioniert dieser Code in Excel 2013?
Ja, der Code ist kompatibel mit Excel 2013 und sollte in dieser Version ohne Probleme laufen.

3. Was mache ich, wenn der Code nicht funktioniert?
Überprüfe, ob die Tabellenblätter korrekt benannt sind und ob der Suchwert in der richtigen Spalte vorhanden ist.

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