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

Forumthread: Makro Kopieren im Bereich wenn Wert >0

Makro Kopieren im Bereich wenn Wert >0
Milan
Hallo liebe Forum Freunde,
Ich brauche ein Makro mit folgender Aufgabenstellung:
Kopiere
aus Tabelle1
suche im Bereich AS4 bis CG40 (Formeln)
kopiere
nur wenn in
Spalte AS4 bis AS40 Wert größer 0
(Beispiel:
Wenn in Spalte AS4 bis AS10 Wert größer 0
Dann kopiere AS4 bis CG 10 )
Einfügen:
in Tabelle2
suche nächste freie Zelle in der Spalte A
Nur die Werte einfügen
Vielen Dank im Voraus
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Makro Kopieren im Bereich wenn Wert >0
20.11.2010 18:20:03
Josef

Hallo Milan,
probier mal.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub kopieren()
  Dim lngRow As Long, rng As Range
  
  With Sheets("Tabelle1")
    For lngRow = 4 To 40
      If .Cells(lngRow, 45) > 0 Then
        If rng Is Nothing Then
          Set rng = .Range(.Cells(lngRow, 45), .Cells(lngRow, 85))
        Else
          Set rng = Union(rng, .Range(.Cells(lngRow, 45), .Cells(lngRow, 85)))
        End If
      End If
    Next
  End With
  
  If Not rng Is Nothing Then
    With Sheets("Tabelle2")
      rng.Copy .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1)
    End With
  End If
  
  Set rng = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Makro Kopieren im Bereich wenn Wert >0
20.11.2010 18:32:57
Milan
Hallo Sepp,
bist ein Engel, vielen DANK, es funktioniert perfekt.
Gruss
Milan
AW: Makro Kopieren im Bereich wenn Wert >0
20.11.2010 19:06:17
Milan
Hallo Sepp,
ein Problem, habe es in eine Testdatei getestet es hat funktioniert.
Habe es jetzt in meine richtige Tabelle eingespielt, nach dem Einfügen steht in jede eingefügte Zelle(#BEZUG!) . Was habe ich falsch gemacht?
Auch die Formate werden eingefügt ich brauche aber nur die Werte.
So habe ich es verändert (nur Tabellennamme geändert):
Option Explicit
Sub kopieren()
Dim lngRow As Long, rng As Range
With Sheets("Eingabe")
For lngRow = 4 To 40
If .Cells(lngRow, 45) > 0 Then
If rng Is Nothing Then
Set rng = .Range(.Cells(lngRow, 45), .Cells(lngRow, 85))
Else
Set rng = Union(rng, .Range(.Cells(lngRow, 45), .Cells(lngRow, 85)))
End If
End If
Next
End With
If Not rng Is Nothing Then
With Sheets("Historie")
rng.Copy .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1)
End With
End If
Set rng = Nothing
End Sub

Gruss
Milan
Anzeige
AW: Makro Kopieren im Bereich wenn Wert >0
20.11.2010 19:21:40
Josef

Hallo Milan,
sorry, mein Fehler, habe das "nur Werte" überlesen

Sub kopieren()
  Dim lngRow As Long, rng As Range
  
  With Sheets("Eingabe")
    For lngRow = 4 To 40
      If .Cells(lngRow, 45) > 0 Then
        If rng Is Nothing Then
          Set rng = .Range(.Cells(lngRow, 45), .Cells(lngRow, 85))
        Else
          Set rng = Union(rng, .Range(.Cells(lngRow, 45), .Cells(lngRow, 85)))
        End If
      End If
    Next
  End With
  
  If Not rng Is Nothing Then
    With Sheets("Historie")
      rng.Copy
      .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1).PasteSpecial xlValues
      Application.CutCopyMode = False
    End With
  End If
  
  Set rng = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Makro Kopieren im Bereich wenn Wert >0
20.11.2010 19:30:11
Milan
SUPER!
jetzt läufts!!
DANKE SEPP
Gruss
Milan
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Makro Kopieren im Bereich wenn Wert > 0


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Datei: Stelle sicher, dass Du die Datei mit den Tabellen „Tabelle1“ und „Tabelle2“ geöffnet hast.

  2. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“, wähle „Einfügen“ und dann „Modul“.

  4. Füge den folgenden Code ein:

    Sub kopieren()
       Dim lngRow As Long, rng As Range
       With Sheets("Tabelle1")
           For lngRow = 4 To 40
               If .Cells(lngRow, 45) > 0 Then
                   If rng Is Nothing Then
                       Set rng = .Range(.Cells(lngRow, 45), .Cells(lngRow, 85))
                   Else
                       Set rng = Union(rng, .Range(.Cells(lngRow, 45), .Cells(lngRow, 85)))
                   End If
               End If
           Next
       End With
       If Not rng Is Nothing Then
           With Sheets("Tabelle2")
               rng.Copy
               .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1).PasteSpecial xlValues
           End With
       End If
       Set rng = Nothing
    End Sub
  5. Schließe den VBA-Editor: Drücke ALT + Q, um zum Excel-Fenster zurückzukehren.

  6. Führe das Makro aus: Gehe zu „Entwicklertools“ > „Makros“, wähle „kopieren“ und klicke auf „Ausführen“.


Häufige Fehler und Lösungen

  • Fehler: #BEZUG! in den Zellen
    Lösung: Stelle sicher, dass Du nur die Werte kopierst. Achte darauf, dass Du .PasteSpecial xlValues im Code verwendest, um nur die Werte einzufügen.

  • Fehler: Das Makro funktioniert nicht
    Lösung: Überprüfe, ob die Tabellennamen korrekt sind. In dem Beispiel sind die Tabellennamen „Tabelle1“ und „Tabelle2“. Passe sie an, wenn Du andere Namen verwendest.


Alternative Methoden

Falls Du kein VBA verwenden möchtest, kannst Du auch die „SVERWEIS“-Funktion oder die Filterfunktion in Excel nutzen, um die gewünschten Werte zu extrahieren und an einen anderen Ort zu kopieren. Diese Methoden erfordern jedoch manuelle Schritte und sind weniger automatisiert.


Praktische Beispiele

  • Beispiel 1: Du hast Verkaufszahlen in „Tabelle1“ und möchtest alle Zeilen kopieren, wo die Verkaufszahlen größer als 0 sind, um sie in „Tabelle2“ zu konsolidieren.

  • Beispiel 2: Du verwendest den Code für eine andere Tabelle, z.B. „Eingabe“ und „Historie“. Ändere einfach die Tabellennamen im Makro-Skript.


Tipps für Profis

  • Optimierung des Codes: Wenn Du regelmäßig mit großen Datenmengen arbeitest, kannst Du den Code optimieren, indem Du Application.ScreenUpdating auf False setzt, bevor Du den Kopiervorgang startest, und auf True, nachdem Du fertig bist. Dies beschleunigt den Prozess erheblich.

    Application.ScreenUpdating = False
    ' Dein Kopiercode hier
    Application.ScreenUpdating = True
  • Fehlerbehandlung einfügen: Nutze On Error Resume Next, um sicherzustellen, dass das Makro nicht abbricht, wenn es auf einen Fehler stößt.


FAQ: Häufige Fragen

1. Frage
Was mache ich, wenn ich keine Entwicklertools in meinem Excel finde?
Antwort: Du kannst die Entwicklertools aktivieren, indem Du zu „Datei“ > „Optionen“ > „Menüband anpassen“ gehst und das Kästchen „Entwicklertools“ aktivierst.

2. Frage
Kann ich das Makro für andere Bereiche anpassen?
Antwort: Ja, Du kannst die Zeilen- und Spaltenreferenzen im Code anpassen, um andere Bereiche zu kopieren.

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