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

For und If in VBA schachteln

For und If in VBA schachteln
15.02.2019 11:03:24
alex
Hallo zusammen,
ich habe folgendes Problem: ich habe viele Tabellenblätter, von denen einige die exakt gleiche Struktur im Aufbau besitzen. Den Inhalt dieser möchte ich auf einem neuen Blatt auflisten lassen (ganz oben einmal mit Überschriftzeile, ansonsten immer erst ab Zeile 2).
Ich hatte bisher schon einiges gefunden, jedoch nie eine korrekte Lösung. Die Syntax ist also wie folgt:
For i = 1 to Worksheets.count
gehe zum jeweils aktiven Blatt
wenn zelle A1="ja"
kopiere alles ins neue arbeitsblatt
sonst mache nichts
i = i+1
Ich wäre dankbar für einen Hinweis, wenn ich versucht habe for und if zu schachteln, kamen leider immer Fehlermeldungen.

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

Betreff
Datum
Anwender
Anzeige
AW: For und If in VBA schachteln
15.02.2019 11:06:59
ede
Hallo Alex,

For i = 1 to Worksheets.count   ' durchlauf für jedes Blatt
if Bedingung then
'kopiere alles ins neue Arbeitsblatt
else
'sonst mache nichts
end if
next i

AW: For und If in VBA schachteln
15.02.2019 11:12:53
alex
Hi ede,
so ähnlich habe ich es bisher auch, jedoch kommt immer der Fehler "Argument ist nicht optional".
Bisher sieht es so aus:
Sub Konsolidieren()
Dim Wks As Worksheet
Dim Bereich As Range
Dim strLC As String
Dim i As Integer
Set Wks = Worksheets.Add
Wks.Name = "Konsolidierung"
For i = 1 To Worksheets.Count
If Range.Value("A1") = "ja" Then
With Worksheets(i).UsedRange
strLC = .Cells(.Rows.Count, .Columns.Count).Address
Set Bereich = .Range("A2:" & strLC)
Bereich.Copy Destination:= _
Wks.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Else
End If
Next i
End Sub

Anzeige
AW: For und If in VBA schachteln
15.02.2019 11:28:02
Werner
Hallo Alex,
würde ich so machen:
Option Explicit
Sub Konsolidieren()
Dim Wks As Worksheet, loLetzte As Long
Set Wks = Worksheets.Add
Wks.Name = "Konsolidierung"
Set Wks = Nothing
Application.ScreenUpdating = False
For Each Wks In ThisWorkbook.Worksheets
Select Case Wks.Name
Case "Konsolidierung", "Noch_einBlatt", "weiteres_Blatt"
'hier die Blätter die nicht bearbeitet werden sollen anführen
Case Else
With Wks
If .Range("A1") = "ja" Then
.UsedRange.Copy
With Worksheets("Konsolidierung")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Row
.Cells(loLetzte, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
End If
End With
End Select
Next Wks
End Sub
Gruß Werner
Anzeige
AW: For und If in VBA schachteln
15.02.2019 11:38:04
alex
Hallo Werner,
danke erstmal für die Hilfe.
Zwei kleine Wünsche hätte ich noch:
- Falls schon ein Blatt konsolidierung besteht, dieses vorher leeren/löschen.
- Beim ersten Kopieren inkl. 1 Zeile (damit Überschriften vorhanden sind), ab dem zweiten Kopiervorgang nur noch ab 2. Zeile bis letzte.
Vielen Dank :)
AW: For und If in VBA schachteln
15.02.2019 11:45:24
Werner
Hallo Alex,
warum denn bitte der ganze Aufwand mit dem prüfen ob vorhanden oder nicht und wenn dann....
Leg dir doch einfach einmalig ein Blatt "Konsolidierung" an. In die erste Zeile kopierst du dir die Überschriften die du brauchtst und fertig.
Option Explicit
Sub Konsolidieren()
Dim Wks As Worksheet, loLetzte As Long
Application.ScreenUpdating = False
Worksheets("Konsolidierung").UsedRange.Offset(1).ClearContents
For Each Wks In ThisWorkbook.Worksheets
Select Case Wks.Name
Case "Konsolidierung", "Noch_einBlatt", "weiteres_Blatt"
'hier die Blätter die nicht bearbeitet werden sollen anführen
Case Else
With Wks
If .Range("A1") = "ja" Then
.UsedRange.Offset(1).Copy
With Worksheets("Konsolidierung")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Row
.Cells(loLetzte, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
End If
End With
End Select
Next Wks
End Sub
Gruß Werner
Anzeige
AW: For und If in VBA schachteln
15.02.2019 12:16:24
alex
Danke Werner,
das war eine gute Idee und funktioniert super :)
Gerne u.Danke für die Rückmeldung. o.w.T.
15.02.2019 13:21:21
Werner
AW: For und If in VBA schachteln
15.02.2019 11:33:25
ede
Hallo nochmal,
Werner war schneller und hat einen guten Lösungsvorschlag unterbreitet, in deinem Code sind auch Fehler (If aus welchem Sheet, Ende With fehlt)

319 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige