Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1824to1828
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Nur in bestimmten Blättern Infos sammeln

Nur in bestimmten Blättern Infos sammeln
05.04.2021 18:13:43
Markus
Hallo Excel-Freunde,
ich habe gerade einen Knoten im Hirn und komme einfach nicht weiter.
Ich bekomme regelmäßig Exceldateien mit bis zu 150 Tabellenblätter. Diese will ich per Makro durchlaufen und bestimmte Zelleninhalten in ein neues Tabelleblatt "FP" kopieren. Das klappt mit der Select Case Schleife auch sehr gut, siehe unten.
Leider sind aber nicht alle Tabellenblätter relevant. Die Namen der relevanten Blätter sind aber im Blatt "Übersicht" in Spalte B aufgelistet, d.h. ich kann ich B2 den Zelleninhalt auslesen, damit nach dem bestimmten Blatt suchen und dann die Werte von dort in "FP" kopieren. Dann zurück in "Übersicht" und eine Zelle weiter nach unten.
Mehrere Kombinationen auch mit If...Then bringen mich aber nicht weiter.
Vielleicht habt ihr ja noch einen Tipp auf Lager.
Vielen Dank!
For Each Worksheet In Worksheets
Select Case Worksheet.Name
Case "Übersicht", "FP"
'Nix macha
Case Else
Worksheet.Activate
Abk = Range("C4")
Verant = Range("B4")
FNom = Range("H4")
'FP ansteuern
Worksheets("FP").Select
Worksheets("FP").Range("A1").Select
'eine Zeile weiter nach unten
If Worksheets("FP").Range("A1").Offset(1, 0)  "" Then
Worksheets("FP").Range("A1").End(xlDown).Select
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Abk
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Verant
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = FNom
End Select
Next Worksheet

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nur in bestimmten Blättern Infos sammeln
05.04.2021 18:30:03
Hajo_Zi
Dim InI as Integer
For Each Worksheet In Worksheets
Case Else
With Worksheets (cells(ini+1,A)
Abk = .Range("C4")
Verant = .Range("B4")
FNom = .Range("H4")
end With
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
Sollte die Datei verlinkt werden?
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
http://www.ms-office-forum.de/forum/showthread.php?t=322895
ändern.
Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
http://www.excel-ist-sexy.de/bilder-statt-datei/
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Das ist nur meine Meinung zu dem Thema.
http://www.excel-ist-sexy.de/bilder-statt-datei/
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Das ist nur meine Meinung zu dem Thema.
GrußformelHomepage
Anzeige
AW: Nur in bestimmten Blättern Infos sammeln
05.04.2021 19:17:12
Nepumuk
Hallo Markus,
teste mal:
Option Explicit
Public Sub Zusammenfassen()
Dim objCell As Range
Dim Abk As Variant, Verant As Variant, FNom As Variant
With Worksheets("Übersicht")
For Each objCell In .Range(.Cells(1, 2), .Cells(.Rows.Count, 2).End(xlUp))
With Worksheets(objCell.Value)
Abk = .Range("C4").Value
Verant = .Range("B4").Value
FNom = .Range("H4").Value
End With
With Worksheets("FP")
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 3).Value = _
Array(Abk, Verant, FNom)
End With
Next
End With
End Sub

Gruß
Nepumuk
AW: Nur in bestimmten Blättern Infos sammeln
06.04.2021 10:00:41
Markus
Hallo Nepumuk,
sehr schöner und kurzer Code. Beneidenswert :)
Ich habe deine Schleife und Variablen mit meinen ausgetauscht und es kommt ein Laufzeit 9-Fehler. Am Anfang dachte es liegt am Startpunkt, weil die Werte nicht wie ursprünglich beschrieben ab B2 losgehen, sondern in A4 auf dem Blatt "Übersicht". So findet natürlich der Code keinen gültigen Blattnamen, sondern irgendwas.
Es hat jedoch nichts gebracht deinen Code

For Each objCell In .Range(.Cells(1, 2), .Cells(.Rows.Count, 2).End(xlUp))
auf die neue Position anzupassen:
For Each objCell In .Range(.Cells(4, 1), .Cells(.Rows.Count, 1).End(xlUp))

Vielleicht gibt's ja noch eine Idee?!
Vielen Dank
Anzeige
AW: Nur in bestimmten Blättern Infos sammeln
06.04.2021 10:08:47
Nepumuk
Hallo Markus,
kannst du mal eine Mustermappe nur mit der Tabelle "Übersicht" hochladen?
Gruß
Nepumuk
AW: Nur in bestimmten Blättern Infos sammeln
06.04.2021 11:11:27
Markus
Hallo Nepumuk,
ich habe die Datei hochgeladen: https://www.herber.de/bbs/user/145326.xlsx
Es ist eine Übersichts-Seite, plus ein paar Blätter zum Durchsuchen.
Danke
M
AW: Nur in bestimmten Blättern Infos sammeln
06.04.2021 11:23:50
Nepumuk
Hallo Markus,
teste mal:
Public Sub Zusammenfassen()
Dim objCell As Range
Dim Abk As Variant, Verant As Variant, FNom As Variant
With Worksheets("Übersicht")
For Each objCell In .Range(.Cells(4, 1), .Cells(.Rows.Count, 1).End(xlUp))
With Worksheets(objCell.Text)
Abk = .Range("C4").Value
Verant = .Range("B4").Value
FNom = .Range("H4").Value
End With
With Worksheets("FP")
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 3).Value = _
Array(Abk, Verant, FNom)
End With
Next
End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Nur in bestimmten Blättern Infos sammeln
06.04.2021 12:40:22
Markus
Hi Nepumuk,
die der Code läuft jetzt mit der Schleife durch ich habe vorweg einen Code der das Blatt "FP" erstellt und etwas formatiert:

Es werden auch Blätter mit Zahlen die nicht in der Liste sind ignoriert.
Leider kommt es am Schluss immernoch zu einem Laufzeit-Fehler 9:

VG
M
AW: Nur in bestimmten Blättern Infos sammeln
06.04.2021 12:47:17
Nepumuk
Hallo Markus,
kann es sein, dass es ein bestimmtes Tabellenblatt nicht gibt? Das müsste ich dann abfangen.
Gruß
Nepumuk
AW: Nur in bestimmten Blättern Infos sammeln
06.04.2021 13:02:02
Markus
Hallo Nepumuk,
es ist durchaus möglich, dass Bezeichnungen in der Spalte gefunden werden die es tatsächlich nicht gibt.
VG
M
Anzeige
AW: Nur in bestimmten Blättern Infos sammeln
06.04.2021 13:11:34
Nepumuk
Hallo Markus,
dann so:
Option Explicit
Public Sub Zusammenfassen()
Dim objCell As Range
Dim Abk As Variant, Verant As Variant, FNom As Variant
With Worksheets("Übersicht")
For Each objCell In .Range(.Cells(4, 1), .Cells(.Rows.Count, 1).End(xlUp))
If WorksheetExist(objCell.Text) Then
With Worksheets(objCell.Text)
Abk = .Range("C4").Value
Verant = .Range("B4").Value
FNom = .Range("H4").Value
End With
With Worksheets("FP")
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 3).Value = _
Array(Abk, Verant, FNom)
End With
End If
Next
End With
End Sub
Private Function WorksheetExist(ByVal pvstrWorksheetname As String) As Boolean
Dim objWorksheet As Worksheet
For Each objWorksheet In Worksheets
If objWorksheet.Name = pvstrWorksheetname Then
Set objWorksheet = Nothing
WorksheetExist = True
Exit For
End If
Next
End Function

Gruß
Nepumuk
Anzeige
AW: Nur in bestimmten Blättern Infos sammeln
06.04.2021 15:55:24
Markus
Hi Nepumuk ... super! Ich habe auch versucht ein paar Fehler einzubauen, aber die wurden ignoriert. es gibt noch viel zu lernen. :)
Da ich mehr Werte aus den Blättern holen muss gehe ich davon aus, dass ich an den markierten Stellen (fett markiert) nur entsprechend erweitern muss, richtig?
With Worksheets(objCell.Text)
Abk = .Range("C4").Value
Verant = .Range("B4").Value
FNom = .Range("H4").Value
 '##### Hier ergänzen
End With

With Worksheets("FP")
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 3).Value = _
Array(Abk, Verant, FNom)
End With
Danke
Markus
Anzeige
AW: Nur in bestimmten Blättern Infos sammeln
06.04.2021 16:00:46
Nepumuk
Hallo Markus,
ja, die Einfügemarken für weitere Werte sind richtig. Du musst nur hier: Resize(1, 3) die Anzahl der Werte eintragen.
Gruß
Nepumuk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige