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

Forumthread: Reiter kopieren wenn 1 oder 2 oder beides WAHR

Reiter kopieren wenn 1 oder 2 oder beides WAHR
05.04.2024 11:31:40
torro100
Hallo liebe VBA Gemeinde,
folgendes Problem versuche ich zu lösen:
Es sollen die Reiter summary, consolidate und Msl2_light immer in eine neue Datei kopiert werden.
Zusätzlich soll auch der Reiter VoucherUsage_VM#1 in diese neuen Datei kopiert werden, wenn in der Zelle K7 = reserved steht.
Gleiches gilt für den Reiter VoucherUsage_NAS, mit gleicher Abfrage in gleicher Zelle.
Funktioniert soweit super.
Nun kann aber auch in beiden angesprochen Voucher Reitern in K7= reserved enthalten sein, sodass beide Reiter in die neuen Datei kopiert werden sollen.
Da klemmt es.

Mein bisher funktionierender Code für die einzelne Abfrage sieht so aus:

Set wbkAlt = ActiveWorkbook
VM = wbkAlt.Worksheets("VoucherUsage_VM#1").Cells(7, 11) = "reserved" '--wahr oder falsch
NAS = wbkAlt.Worksheets("VoucherUsage_NAS").Cells(7, 11) = "reserved" '--wahr oder falsch

If VM Then
wbkAlt.Worksheets(Array("summary", "consolidate", "Msl2_light", "VoucherUsage_VM#1")).Copy
ElseIf NAS Then
wbkAlt.Worksheets(Array("summary", "consolidate", "Msl2_light", "VoucherUsage_NAS")).Copy
Else
wbkAlt.Worksheets(Array("summary", "consolidate", "Msl2_light")).Copy
End If

Set wbkNeu = ActiveWorkbook
If VM Then
With wbkNeu.Worksheets("VoucherUsage_VM#1").UsedRange
.Copy
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
.Cells.FormatConditions.Delete
End With
End If

If NAS Then
With wbkNeu.Worksheets("VoucherUsage_NAS").UsedRange
.Copy
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
.Cells.FormatConditions.Delete
End With
End If

With wbkNeu.Worksheets("Msl2_light").UsedRange
.Copy
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
.Cells.FormatConditions.Delete
End With

With wbkNeu.Worksheets("consolidate").UsedRange
.Copy
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
.Cells.FormatConditions.Delete
End With

With wbkNeu.Worksheets("summary").UsedRange
.Copy
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
.Cells.FormatConditions.Delete
End With

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Reiter kopieren wenn 1 oder 2 oder beides WAHR
05.04.2024 12:23:39
Kuwer
Hallo,

Sub abc()

Dim objWs As Worksheet
Dim strWs As String
Dim varWs As Variant

varWs = Split("summary,consolidate,Msl2_light", ",")
With Worksheets("VoucherUsage_VM#1")
If .Range("K7").Value = "reserved" Then
ReDim Preserve varWs(UBound(varWs) + 1)
varWs(UBound(varWs)) = .Name
End If
End With
With Worksheets("VoucherUsage_NAS")
If .Range("K7").Value = "reserved" Then
ReDim Preserve varWs(UBound(varWs) + 1)
varWs(UBound(varWs)) = .Name
End If
End With
Worksheets(varWs).Copy

For Each objWs In Worksheets
With objWs.UsedRange
.Copy
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
.Cells.FormatConditions.Delete
End With
Next objWs
End Sub


Gruß, Uwe
Anzeige
AW: Reiter kopieren wenn 1 oder 2 oder beides WAHR
05.04.2024 12:52:14
torro100
Hallo Uwe,
danke für deine Antwort, die leider nur zum Teil verstehe.
Vor deinem Code wäre bei mir noch:

Pfad = ThisWorkbook.Path 'Pfad der gerade geöffneten Datei
Name = Worksheets("configuration").Range("a1") & "_" & Format(Date, "yyyymmdd") & "_" & Worksheets("configuration").Range("a2") & ".xlsx
If Dir(ThisWorkbook.Path & "\kit calculation\", vbDirectory) = "" Then MkDir (ThisWorkbook.Path & "\kit calculation\")

Warum, weil die neue Datei dann unter dem o.g. Pfad angelegt oder überschrieben werden soll.
In meinem ursprünglichen Code wurde die neue Datei wie folgt gespeichert:

wbkNeu.SaveAs Filename:=Pfad & "\kit calculation\" & Name, FileFormat:=xlOpenXMLWorkbook
wbkNeu.Close savechanges = True
Set wbkNeu = Nothing
Set wbkAlt = Nothing

Jetzt gibt es in deiner Variante ja kein wbkNeu mehr.
Der Vesuch, wbkneu durch objws zu ersetzen scheiterte, vermutlich da du objws als worksheet definiert hast, ich aber ein Workbook anspreche.
Wie gesagt verstehe ich den Code von dir nicht ganz, da ich keinen Bezug zu einer neuen Datei finde.

danke und vg
torro
Anzeige
AW: Reiter kopieren wenn 1 oder 2 oder beides WAHR
05.04.2024 12:59:00
Kuwer
Hallo torro,

vor End Sub einfach noch

  ActiveWorkbook.SaveAs Filename:=Pfad & "\kit calculation\" & Name, FileFormat:=xlOpenXMLWorkbook

ActiveWorkbook.Close


Gruß, Uwe
AW: Reiter kopieren wenn 1 oder 2 oder beides WAHR
05.04.2024 13:16:34
torro100
Hallo Uwe,
das war zu dann doch einfach ;-)
Danke klappt wie gewünscht.
vg
torro
Anzeige
AW: Reiter kopieren wenn 1 oder 2 oder beides WAHR
05.04.2024 12:36:43
ralf_b
Eine Variante hab ich auch noch. Ungetestet

Sub VVV()

Dim sh As Worksheet

Set wbkAlt = ActiveWorkbook
VM = wbkAlt.Worksheets("VoucherUsage_VM#1").Cells(7, 11) = "reserved" '--wahr oder falsch
NAS = wbkAlt.Worksheets("VoucherUsage_NAS").Cells(7, 11) = "reserved" '--wahr oder falsch

wbkAlt.Worksheets(Array("summary", "consolidate", "Msl2_light")).Copy

Set wbkneu = ActiveWorkbook

If VM Then
wbkAlt.Worksheets("VoucherUsage_VM#1").Copy wbkneu
ElseIf NAS Then
wbkAlt.Worksheets("VoucherUsage_NAS").Copy wbkneu
End If

For Each sh In wbkneu
With sh.UsedRange
.Copy
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
.Cells.FormatConditions.Delete
End With
Next

End Sub


Anzeige
AW: Reiter kopieren wenn 1 oder 2 oder beides WAHR
05.04.2024 13:07:54
torro100
Hallo Ralf,
bei deiner Variante markiert er mir folgende Zeile,
obwohl sh als worksheets definiert

For Each sh In wbkneu
vg
torro
AW: Reiter kopieren wenn 1 oder 2 oder beides WAHR
05.04.2024 13:11:09
ralf_b
versuch mal so For Each sh In wbkneu.Worksheets
AW: Reiter kopieren wenn 1 oder 2 oder beides WAHR
05.04.2024 13:19:25
torro100
Hallo Ralf,
mag er immer noch nicht.
Aber die Variante von Uwe klappt jetzt wie gewünscht.
Danke für deine Mühe.

vg

torro
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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