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

Forumthread: VBA Zellen Kopieren wenn diese Bedingungen erfüllt

VBA Zellen Kopieren wenn diese Bedingungen erfüllt
10.11.2017 10:46:20
Mario
Hallo,
ich hoffe mir kann jemand helfen :-)
Ich benötige Hilfe bei einem Problem, ich will mittels VBA den Zellinhalt (Ausgabetext) der Zellen aus der Zeile 4 von Spalte D bis FC in die Zeile 2 Kopieren, aber nur wenn der Zellinhalt mit den Buchstaben "PV VN" beginnt. (Alternativ, immer dann wenn kein Fahler #NV angezeigt wird, vielleicht geht das ja auch)
Alles in Tabelle 2
Ist das möglich?
Dankeschön für einen Tipp!!
LG Mario
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zellen Kopieren wenn diese Bedingungen erfüllt
10.11.2017 11:05:09
Werner
Hallo Mario,
das ist nicht eindeutig.
-kann PV VN bzw. #NV in mehreren Zellen der Zeile stehen?
-muss nur eine bestimmte Spalte auf PV VN bzw. #NV überprüft werden?
-wohin soll kopiert werden, gleiche Tabelle Zeile 2, andere Tabelle Zeile 2 ?
Am besten machst du mal eine kleine Beispielmappe in der du auch dein Wunschergebnis aufzeigst und stellst die hier online.
Gruß Werner
Anzeige
AW: VBA Zellen Kopieren wenn diese Bedingungen er
10.11.2017 11:19:19
Mario
Hallo Werner,
ja, "PV VN-138-2016" oder "PV VN-36-2017" (die Werte nach den Buchstaben PV VN ändern sich immer) können in der ganzen Zeile 4 stehen (Spalte D bis FC), wenn die vorangehende Funktion keinen Wert mit PV VN findet erscheint #NV.
Wenn PV VN gefunden wurde dann soll in der selben Tabelle (Tabelle2) der Wert in der selben Spalte in die Zeile 2 kopiert werden, falls #NV gefunden wurde dann nicht.
Hoffe das hilft.
Gruß Mario
Anzeige
AW: VBA Zellen Kopieren wenn diese Bedingungen er
10.11.2017 11:34:08
Werner
Hallo Mario,
so?
Public Sub aaa()
Dim raBereich As Range, raZelle As Range
With Worksheets("Tabelle3") 'anpassen
Set raBereich = .Range(.Cells(4, 4), .Cells(4, 159))
For Each raZelle In raBereich
If Left(raZelle.Value, 5) = "PV VN" Then
raZelle.Offset(-2, 0) = raZelle
End If
Next raZelle
End With
End Sub
Gruß Werner
Anzeige
AW: VBA Zellen Kopieren wenn diese Bedingungen er
10.11.2017 11:49:02
Mario
Hallo,
da komt eine Fehlermeldung zu dieser Zeile
With Worksheets("Tabelle3") 'anpassen
Laufzeitfehler '9: Index außerhalb des gültigen Bereichs
LG Mario
AW: VBA Zellen Kopieren wenn diese Bedingungen er
10.11.2017 11:51:41
Werner
Hallo Mario,
da steht doch als Kommentar "anpassen".
Dann hast du keine Tabelle mit dem Namen Tabelle3, das mußt du an deine Gegebenheiten anpassen.
Gruß Werner
Anzeige
AW: VBA Zellen Kopieren wenn diese Bedingungen er
10.11.2017 11:54:39
Mario
die Fehlermeldung kommt aber auch wenn ich es auf "Tabelle2" anpasse
sorry, habe echt keine Ahnung was ich falsch mache
AW: VBA Zellen Kopieren wenn diese Bedingungen er
10.11.2017 11:56:00
Mario
habe es so drin stehen:
Sub ATLAS_Schaltfläche1_Klicken()
' ATLAS_Schaltfläche1_Klicken Makro
' Tastenkombination: Strg+a
Dim raBereich As Range, raZelle As Range
With Worksheets("Tabelle2")
Set raBereich = .Range(.Cells(4, 4), .Cells(4, 159))
For Each raZelle In raBereich
If Left(raZelle.Value, 5) = "PV VN" Then
raZelle.Offset(-2, 0) = raZelle
End If
Next raZelle
End With
End Sub

Anzeige
AW: VBA Zellen Kopieren wenn diese Bedingungen er
10.11.2017 12:24:06
Werner
Hallo Mario,
ist das auch der Name so wie er auf dem Tabellenblattreiter steht?
Gruß Werner
AW: VBA Zellen Kopieren wenn diese Bedingungen er
10.11.2017 12:30:45
Mario
ja, habe den Reiter jetzt in Tabelle2 umbenannt, dann kommt aber jetzt die Fehlermeldung Laufzeitfehler '13: Typen unverträglich und der debugger zeigt die Zeile
If Left(raZelle.Value, 5) = "PV VN" Then
markiert an
Anzeige
AW: VBA Zellen Kopieren wenn diese Bedingungen er
10.11.2017 12:55:38
Werner
Hallo Mario,
für die Beispielmappe:
Public Sub aaa()
Dim raBereich As Range, raZelle As Range
With Worksheets("Tabelle2") 'anpassen
Set raBereich = .Range(.Cells(4, 4), .Cells(4, 159))
For Each raZelle In raBereich
If Not IsError(raZelle) Then
If Left(raZelle.Value, 5) = "PV VN" Then
.Range("D2") = raZelle
End If
End If
Next raZelle
End With
Set raBereich = Nothing
End Sub
Gruß Werner
Anzeige
AW: VBA Zellen Kopieren wenn diese Bedingungen er
10.11.2017 13:09:54
Mario
danke, aber jetzt wird nur die letzte gefundene in die Zelle D2 kopiert. Ich muss alle gefundenen in die selbe Spalte der Reihe 2 jeweisl kopieren.
sorr, danke nochmal!
AW: VBA Zellen Kopieren wenn diese Bedingungen er
10.11.2017 13:57:27
Werner
Hallo Mario,
Public Sub aaa()
Dim raBereich As Range, raZelle As Range
With Worksheets("Tabelle2") 'anpassen
Set raBereich = .Range(.Cells(4, 4), .Cells(4, 159))
For Each raZelle In raBereich
If Not IsError(raZelle) Then
If Left(raZelle.Value, 5) = "PV VN" Then
raZelle.Offset(-2, 0) = raZelle
End If
End If
Next raZelle
End With
Set raBereich = Nothing
End Sub
Gruß Werner
Anzeige
AW: VBA Zellen Kopieren wenn diese Bedingungen er
10.11.2017 14:21:18
Mario
Mega!!!! Danke!
Gerne u. Danke für die Rückmeldung. o.w.T.
10.11.2017 14:41:07
Werner
;

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

Zellen mit VBA kopieren, wenn Bedingungen erfüllt sind


Schritt-für-Schritt-Anleitung

Um Zellen in Excel mit VBA zu kopieren, wenn bestimmte Bedingungen erfüllt sind, kannst du folgenden Code verwenden. In diesem Beispiel werden die Zellen in Zeile 4 von Spalte D bis FC in Zeile 2 kopiert, wenn der Zellinhalt mit "PV VN" beginnt:

Public Sub ZellenKopieren()
    Dim raBereich As Range, raZelle As Range
    With Worksheets("Tabelle2") ' Stelle sicher, dass der Tabellenname korrekt ist
        Set raBereich = .Range(.Cells(4, 4), .Cells(4, 159)) ' Bereich von D4 bis FC4
        For Each raZelle In raBereich
            If Not IsError(raZelle) Then
                If Left(raZelle.Value, 5) = "PV VN" Then
                    raZelle.Offset(-2, 0) = raZelle ' Kopiere in Zeile 2
                End If
            End If
        Next raZelle
    End With
End Sub

Dieser Code überprüft, ob der Zellinhalt den Kriterien entspricht, und kopiert die Werte entsprechend.


Häufige Fehler und Lösungen

  1. Fehler: Laufzeitfehler '9: Index außerhalb des gültigen Bereichs'

    • Lösung: Überprüfe den Namen des Arbeitsblatts. Stelle sicher, dass du den korrekten Namen verwendest. Wenn das Blatt "Tabelle2" heißt, sollte der Code so bleiben.
  2. Fehler: Laufzeitfehler '13: Typen unverträglich'

    • Lösung: Dieser Fehler tritt auf, wenn der Code versucht, einen Wert zu verarbeiten, der nicht den erwarteten Typ hat. Stelle sicher, dass du nur mit den Zellen arbeitest, die tatsächlich Text oder Zahlen enthalten.
  3. Fehler: Nur die letzte gefundene Zelle wird kopiert

    • Lösung: Stelle sicher, dass die Offset-Methode korrekt verwendet wird. Der oben angegebene Code sollte alle passenden Zellen in die jeweilige Spalte in Zeile 2 kopieren.

Alternative Methoden

Eine alternative Methode ist die Verwendung von Excel-Formeln, um Zellen zu kopieren, wenn Bedingungen erfüllt sind. Du kannst die Formel WENN in Verbindung mit INDEX und VERGLEICH verwenden, um die gewünschten Werte zu extrahieren.


Praktische Beispiele

Wenn du beispielsweise mehrere Zellen in ein anderes Tabellenblatt kopieren möchtest, kannst du den Code wie folgt anpassen:

Public Sub ZellenKopierenZuAnderenBlatt()
    Dim raBereich As Range, raZelle As Range
    Dim ZielBlatt As Worksheet
    Set ZielBlatt = ThisWorkbook.Worksheets("ZielTabelle") ' Name des Zielarbeitsblattes

    With Worksheets("Tabelle2")
        Set raBereich = .Range(.Cells(4, 4), .Cells(4, 159)) ' Bereich D4:FC4
        For Each raZelle In raBereich
            If Not IsError(raZelle) Then
                If Left(raZelle.Value, 5) = "PV VN" Then
                    ZielBlatt.Cells(2, raZelle.Column) = raZelle ' Kopiere in die Ziel-Zeile
                End If
            End If
        Next raZelle
    End With
End Sub

In diesem Beispiel wird der Inhalt in die zweite Zeile eines anderen Tabellenblatts kopiert.


Tipps für Profis

  • Nutze die Möglichkeit, mehrere Bedingungen zu kombinieren, um die Flexibilität deines Codes zu erhöhen.
  • Kommentiere deinen Code ausführlich, um zukünftige Anpassungen zu erleichtern.
  • Teste den Code in einer Kopie deiner Arbeitsmappe, um Datenverluste zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellen in ein anderes Tabellenblatt kopieren?
Du kannst den Code anpassen und den Zielbereich definieren, wie im Beispiel oben.

2. Was mache ich, wenn ich eine Fehlermeldung erhalte?
Überprüfe die Zeilen, auf die der Code zugreift, und stelle sicher, dass die Daten vorhanden sind und die Datentypen korrekt sind.

3. Kann ich den Code für andere Bedingungen anpassen?
Ja, du kannst die If-Bedingungen anpassen, um andere Kriterien zu überprüfen, wie z.B. das Vorhandensein eines bestimmten Wertes oder die Überprüfung auf leere Zellen.

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