Excel VBA Zellen in ein anderes Tabellenblatt Kopieren wenn Bedingung erfüllt?

3 Antworten

Ich habe das jetzt mal nicht getestet, aber versuche es mal mit:

Sub BedingteKopieZeilen()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
With Tabelle2
    ZeileMax = .UsedRange.Rows.Count
    n = 7
    For Zeile = 3 To ZeileMax
        If .Cells(Zeile, 25).Value = "Kurtaxe" Then
            .Cells(Zeile, 1).Copy Destination:=Tabelle10.Cells(n, 1)
            .Cells(Zeile, 16).Copy Destination:=Tabelle10.Cells(n, 2)
            n = n + 1
        End If
    Next Zeile
End With
End Sub

Und nutze für Code, den Du hier einfügst bitte die Option "Quelltext".

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

Bernd843 
Beitragsersteller
 20.05.2019, 17:55

Hallo Danke für die fertige Formol. Leider habe ich in spalte 16 eine Formel stehen und vermute, das es deswegen nicht geht es zeigt mir die Namen an aber den Betrag nicht, da stehr #Bezug. Jetzt weis ich nicht kann man da mit VBA den Betrag anzeigen lassen oder mit einem SVerweis?. Trotz alledem vielen Herzlichen Dank. ich habe mir schon seit einer Woche den Kopf zerbrochen und im Internet nach einer Lösung gesucht. Danke

Bernd

0
Oubyi, UserMod Light  20.05.2019, 21:16
@Bernd843

Teste mal:

Sub BedingteKopieZeilen()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
With Sheets("Tabelle2")
  ZeileMax = .UsedRange.Rows.Count
  n = 7
  For Zeile = 3 To ZeileMax
    If .Cells(Zeile, 25).Value = "Kurtaxe" Then
      .Cells(Zeile, 1).Copy Destination:=Sheets("Tabelle10").Cells(n, 1)
      .Cells(Zeile, 16).Copy
      Sheets("Tabelle10").Cells(n, 2).PasteSpecial Paste:=xlPasteValues
      n = n + 1
    End If
  Next Zeile
End With
End Sub

SVERWEIS wäre natürlich auch eine Möglichkeit.

0
Bernd843 
Beitragsersteller
 21.05.2019, 18:40
@Oubyi, UserMod Light

Hallo,

Dein Code hat mir Super weiter geholfen Viielen Viiielen Dank nd es funktioniert jetzt alles so wie es soll. Ich finde es Super das das es solche Leute Wie euch gibt die anderen helfen. Danke

1

Statt Tabelle.Rows(Zeilennummer) nimmst du ein anderes Range-Objekt.

Bei einer einzelnen Zelle

Tabelle.Cells(Zeilennummer, Spaltennummer)

bei mehreren Zellen

Tabelle.Range(Tabelle.Cells(Zeilennummer, Startspaltennummer), Tabelle.Cells(Zeilennummer, Endspaltennummer))


Bernd843 
Beitragsersteller
 19.05.2019, 21:18

Hallo PWolf,

es tut mir leid, aber ich verstehe es nicht.

ich habe das "Tabelle.Cells(Zeilennummer, Spaltennummer)" jetzt versucht und bekomme die erste Zelle in jede Spalte kopiert

.Cells(Zeile, 1).Copy Destination:=Tabelle10.Rows(n)

0
LtLTSmash  19.05.2019, 21:47
@Bernd843

in der 2. Zeile musst du die "Rows" auch gegen die Cells(n,1) tauschen.

1

was möchtest du denn kopieren? nur eine Zelle? Und soll die Formatierung mit kopiert werden oder nur ein Wert übertragen werden?