AW: VbaMakro
01.12.2017 07:54:25
fcs
Hallo FloW,
nachfolgend ein Makro, das du noch ein wenig anpassen muss
- Blattname
- Art des Übertragens der Daten.
Gruß
Franz
'Makro in einem allgemeinen Modul
Sub Copy_nach_B()
Dim wksQ As Worksheet, wksZ As Worksheet
Dim ZeileQ As Long, ZeileZ As Long, ZeileQL As Long
If MsgBox("Daten jetzt in neues Blatt kopieren", _
vbQuestion + vbOKCancel, "Daten kopieren") = vbCancel Then Exit Sub
Set wksQ = ActiveWorkbook.Worksheets("Sheet A") 'Name ggf anpassen
With wksQ
'letzte Zeile mit Inhalt in Spalten D, E oder G
ZeileQL = Application.WorksheetFunction.Max(.Cells(.Rows.Count, 4).End(xlUp).Row, _
.Cells(.Rows.Count, 5).End(xlUp).Row, .Cells(.Rows.Count, 7).End(xlUp).Row)
For ZeileQ = 2 To ZeileQL
'Prüfbedingungen für kopieren
If Not LCase(.Cells(ZeileQ, 7).Value) = "nein" Then
If wksZ Is Nothing Then
'neues Tabellenblatt in Arbeitsmake anlegen
With ActiveWorkbook
Set wksZ = .Worksheets.Add(After:=wksQ)
End With
With wksZ
'Spalten-Titel
ZeileZ = 1
.Cells(ZeileZ, 1) = "Titel 1"
.Cells(ZeileZ, 2) = "Titel 2"
.Cells(ZeileZ, 3) = "Titel 3"
.Range("A2").Select
ActiveWindow.FreezePanes = True
End With
End If
ZeileZ = ZeileZ + 1
'nur Werte übertragen
wksZ.Cells(ZeileZ, 1) = .Cells(ZeileQ, 4).Value
wksZ.Cells(ZeileZ, 2) = .Cells(ZeileQ, 5).Value
wksZ.Cells(ZeileZ, 3) = .Cells(ZeileQ, 7).Value
'oder Zellen kopieren
.Range(.Cells(ZeileQ, 4), .Cells(ZeileQ, 5)).Copy wksZ.Cells(ZeileZ, 1)
.Cells(ZeileQ, 7).Copy wksZ.Cells(ZeileZ, 3)
End If
Next
End With
If ZeileZ = 0 Then
MsgBox "keine Daten zum kopieren gefunden", _
vbInformation + vbOKOnly, "Daten kopieren"
End If
End Sub