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

Forumthread: ProblemVBA-Wert in Spalte suchen und Zeile kopiere

ProblemVBA-Wert in Spalte suchen und Zeile kopiere
08.08.2018 09:03:51
Michael
Hallo Leute!
Ich habe ein Problem in VBA und hoffe, dass mir jemand von euch weiterhelfen kann. Leider bin ich kein VBA-Profi und habe auch nichts passendes in den diversen Foren gefunden.
Ich muss in der Tabelle "Daten" in der Spalte S (bzw.18) alle Zeilen deren Spaltenwert kleiner als 30 ist in die Tabelle "Daten30" kopieren.
Dazu verwende ich folgende VBA Makro:
Sub datenunter30()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
With Daten
ZeileMax = .UsedRange.Rows.Count ************
n = 6
For Zeile = 6 To ZeileMax
If .Cells(Zeile, 18).Value > 30 Then
.Rows(Zeile).Copy Destination:=Daten30.Rows(n)
n = n + 1
End If
Next Zeile
End With
End Sub

************ hier zeigt der Debugger den Fehler "Laufzeit 424-Objekt erforderlich" an.
Wahrscheinlich ist es nur eine Kleinigkeit die falsch ist, aber ich kann den Fehler leider nicht finden.
Ich hoffe, dass mir jemand weiterhelden kann.
LG Michael
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ProblemVBA-Wert in Spalte suchen und Zeile kopiere
08.08.2018 09:15:21
Werner
Hallo Michael,
Sub datenunter30()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
Application.ScreenUpdating = False
With Worksheets("Daten")
ZeileMax = .UsedRange.Rows.Count ************
n = 6
For Zeile = 6 To ZeileMax
If .Cells(Zeile, 18).Value > 30 Then
.Rows(Zeile).Copy Destination:=Worksheets("Daten30").Rows(n)
n = n + 1
End If
Next Zeile
End With
Application.ScreenUpdating = True
End Sub
Gruß Werner
Anzeige
AW: ProblemVBA-Wert in Spalte suchen und Zeile kopiere
08.08.2018 09:21:33
Werner
Hallo Michael,
was ich noch vergessen habe:
Du schreibst, dass du alle Zeilen kopieren willst bei denen in Spalte S der Wert kleiner 30 ist.
Hier:
If .Cells(Zeile, 18).Value > 30 Then

prüfst du aber auf größer (>) und nicht auf kleiner (
Im Übrigen stellt sich die Frage, um wieviele Datensätze es sich handelt. Bei größeren Datenmengen würde ich auf eine Schleife verzichten und stattdessen die Spalte S nach kleiner 30 filtern und dann das Filterergebnis kopieren.
Gruß Werner
Anzeige
AW: ProblemVBA-Wert in Spalte suchen und Zeile kopiere
08.08.2018 09:35:23
Michael
Hallo Werner!
Danke funktioniert jetzt super!
Danke für die Hinweise. Es handelt sich nicht um allzu viele Datensätze und die Schleife reicht für meine Anwendungen aus.
LG Michael
Gerne u.Danke für die Rückmeldung. o.w.T.
08.08.2018 09:43:30
Werner
AW: ProblemVBA-Wert in Spalte suchen und Zeile kopiere
08.08.2018 09:26:28
Werner
Hallo Michael,
und übrigens hat die Spalte S die Spaltennummer 19 und nicht 18.
Gruß Werner
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Werte in Excel per VBA suchen und kopieren


Schritt-für-Schritt-Anleitung

Um alle Zeilen, deren Wert in der Spalte S (Spalte 19) kleiner als 30 ist, in die Tabelle "Daten30" zu kopieren, kannst du das folgende VBA-Makro verwenden:

Sub datenunter30()
    Dim Zeile As Long
    Dim ZeileMax As Long
    Dim n As Long

    Application.ScreenUpdating = False
    With Worksheets("Daten")
        ZeileMax = .UsedRange.Rows.Count
        n = 6
        For Zeile = 6 To ZeileMax
            If .Cells(Zeile, 19).Value < 30 Then
                .Rows(Zeile).Copy Destination:=Worksheets("Daten30").Rows(n)
                n = n + 1
            End If
        Next Zeile
    End With
    Application.ScreenUpdating = True
End Sub

Stelle sicher, dass du die richtige Spaltennummer (19 für Spalte S) und die richtige Tabelle ("Daten") verwendest.


Häufige Fehler und Lösungen

  1. Laufzeitfehler 424 - Objekt erforderlich
    Dieser Fehler tritt auf, wenn du versuchst, auf ein Arbeitsblatt zuzugreifen, das nicht vorhanden ist. Stelle sicher, dass die Tabelle "Daten" und "Daten30" tatsächlich existieren.

  2. Falsches Vergleichszeichen
    Achte darauf, dass du in der If-Bedingung < (kleiner) verwendest, anstatt > (größer). Das könnte zu unerwarteten Ergebnissen führen.


Alternative Methoden

Wenn du mit größeren Datenmengen arbeitest, kannst du auch Filter verwenden, um die Zeilen zu kopieren. Gehe dazu wie folgt vor:

  1. Wähle die Tabelle "Daten".
  2. Aktiviere den Autofilter über Daten > Filter > Autofilter.
  3. Filtere die Spalte S (Spalte 19) nach Werten kleiner als 30.
  4. Kopiere die gefilterten Zeilen in die Tabelle "Daten30".

Diese Methode kann effizienter sein, da sie keine Schleifen benötigt.


Praktische Beispiele

Angenommen, du hast folgende Daten in der Tabelle "Daten":

A B ... S
1 2 ... 25
3 4 ... 35
5 6 ... 20

Nach dem Ausführen des Makros werden die Zeilen mit Werten kleiner als 30 (also die erste und die dritte Zeile) in die Tabelle "Daten30" kopiert.


Tipps für Profis

  • Performance: Deaktiviere die Bildschirmaktualisierung (Application.ScreenUpdating = False), um die Ausführungsgeschwindigkeit zu erhöhen, besonders bei großen Datensätzen.
  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um unerwartete Fehler während der Makroausführung abzufangen und zu protokollieren.
  • Automatisierung: Du kannst das Makro so anpassen, dass es automatisch beim Öffnen der Datei oder beim Ändern eines Wertes ausgeführt wird.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um andere Bedingungen zu verwenden?
Du kannst die If-Bedingung ganz einfach ändern, indem du den Vergleichswert und das Vergleichszeichen anpasst. Zum Beispiel: If .Cells(Zeile, 19).Value >= 50 Then.

2. Was soll ich tun, wenn ich eine große Datenmenge habe?
In diesem Fall ist es oft effizienter, Filter zu verwenden. Dies spart Zeit und Ressourcen, da du nicht Zeile für Zeile durchlaufen musst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige