online 1
gast (50)

/ Forum / Anwendungen(Java,C++...)

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon xxLunaxx vom 24.07.2021, 09:28 Options

vba tabelle durchsuchen

Hallo zusammen,

ich bin ein absoluter vba anfänger, ich mache hier ein praktikum und soll mich in vba schlau machen. Meine erste aufgabe ist es eine Tabelle zu durchsuchen und sobald in der Tabelle z.B. x steht, soll die ganze Zeile kopiert werden und in einem neuen Tabellenblatt ausgegeben werden.
Wie mache ich das? Ich es bisher mit einer if funktion probiert und wollte da eine for schleife integrieren. Aber wie bekomme ich es hin, dass er jede zeile durchsucht?
Ich danke euch schon mal im voraus, für euch scheint die Frage wahrscheinlich lächerlich, aber jeder hat ja mal angefangen ;))

Liebe Grüße
Sarah

P.S.: Für Literaturempfehlungen bin ich auch sehr dankbar


Antwort schreiben

Antwort 1 von coros vom 24.07.2021, 15:45 Options

Hallo Sarah,

das könnte man z.B. mit nachfolegndem Makro realisieren. Hier wird das aktuelle Tabellenblatt nach dem Text, der in dem Eingabefenster eingetragen wurde, durchsucht. Bei Übereinstimmungen wird die gesamte Zeile der Übereinstimmung in ein neu erzeugtes Tabellenblatt kopiert.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

[b]Option Explicit

Sub Duplikate_finden_und_kopieren()
Dim rngSuchbereich As Range
Dim strAddresse As String
Dim objAktSheet As Object
Dim objNewSheet As Object
Dim varSuchtext As String

varSuchtext = InputBox("Bitte Scuchbegriff eintragen")

If varSuchtext = "" Or varSuchtext = False Then Exit Sub

'Tabellenblatt "Auswertung" löschen
On Error Resume Next
Application.DisplayAlerts = False
Sheets("Auswertung").Delete
Application.DisplayAlerts = True
On Error GoTo 0


Set objAktSheet = ActiveSheet
'Neues Tabellenblatt mit denm Namen "Auswertung" anlegen
Set objNewSheet = Application.Sheets.Add
objNewSheet.Name = "Auswertung"

'Bereich durchsuchen und bei Übereinstimmung Zeile kopieren und in Blatt "Auswertung" einfügen
With objAktSheet.Range("A1:IV65536")
    Set rngSuchbereich = .Find(What:=varSuchtext, LookIn:=xlValues)
    If Not rngSuchbereich Is Nothing Then
        strAddresse = rngSuchbereich.Address
        Do
            objAktSheet.Rows(rngSuchbereich.Row).Copy _
                objNewSheet.Cells(objNewSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
            Set rngSuchbereich = .FindNext(rngSuchbereich)
        Loop While Not rngSuchbereich Is Nothing And rngSuchbereich.Address <> strAddresse
    End If
End With

Set objAktSheet = Nothing
Set objNewSheet = Nothing

End Sub
[/b]

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

Bei Fragen melde Dich.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von coros vom 24.07.2021, 15:47 Options

Hallo,

ich nochmal, Leider ist mir beim Formatieren des Codes für diesen Beitrag ein Fehler unteerlaufen. Daher hier nochmal das Makro:

Option Explicit

Sub Duplikate_finden_und_kopieren()
Dim rngSuchbereich As Range
Dim strAddresse As String
Dim objAktSheet As Object
Dim objNewSheet As Object
Dim varSuchtext As String

varSuchtext = InputBox("Bitte Scuchbegriff eintragen")

If varSuchtext = "" Or varSuchtext = False Then Exit Sub

'Tabellenblatt "Auswertung" löschen
On Error Resume Next
Application.DisplayAlerts = False
Sheets("Auswertung").Delete
Application.DisplayAlerts = True
On Error GoTo 0


Set objAktSheet = ActiveSheet
'Neues Tabellenblatt mit denm Namen "Auswertung" anlegen
Set objNewSheet = Application.Sheets.Add
objNewSheet.Name = "Auswertung"

'Bereich durchsuchen und bei Übereinstimmung Zeile kopieren und in Blatt "Auswertung" einfügen
With objAktSheet.Range("A1:IV65536")
    Set rngSuchbereich = .Find(What:=varSuchtext, LookIn:=xlValues)
    If Not rngSuchbereich Is Nothing Then
        strAddresse = rngSuchbereich.Address
        Do
            objAktSheet.Rows(rngSuchbereich.Row).Copy _
                objNewSheet.Cells(objNewSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
            Set rngSuchbereich = .FindNext(rngSuchbereich)
        Loop While Not rngSuchbereich Is Nothing And rngSuchbereich.Address <> strAddresse
    End If
End With

Set objAktSheet = Nothing
Set objNewSheet = Nothing

End Sub


MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 3 von xxlunaxx vom 26.07.2021, 11:18 Options

Hallo Oliver,

erst einmal vielen lieben Dank, dass du dich meinem Problem angenommen hast. Ich werde es direkt am Montag ausprobieren und dir dann nochmal Rückmeldung geben.

Schönen Sonntag,
Grüße

Sarah

Antwort 4 von xxLunaxx vom 27.07.2021, 18:02 Options

Hallo Oliver,

vielen Dank nochmal, es funktioniert bestens.
Auch danke für den Verweis auf deine Homepage, die ist ja wirklich super.

Grüße
Sarah

Ähnliche Themen

VBA Code
Marodas  02.05.2008 - 67 Hits - 1 Antwort

Makro in VBA
Bollerkohl  21.08.2008 - 50 Hits - 7 Antworten

VBA in VB6 umwandeln?
dersuchendeX09  28.11.2009 - 705 Hits - 2 Antworten

Frage zu VBA / Excel
pamus  27.05.2009 - 272 Hits - 1 Antwort

VBA Problem mit Makro
ina87xxx  15.07.2009 - 282 Hits - 6 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026