Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1740to1744
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

Auswahl von Arbeitsblättern Excel

Auswahl von Arbeitsblättern Excel
03.03.2020 19:40:26
Arbeitsblättern
Hallo Liebes Excel Forum,
ich stehe vor einem Problem mit einer Excel Tabelle und komme nicht weiter. Vielleicht hat hier jemand den zündenden Funken der mir weiterhilft.
Für die Kalkulation von Angebotspreisen habe ich eine Excel Tabelle aus mehreren Arbeitsblättern.
Es gibt 15 Arbeitsblätter von PB1 bis PB15. Im Arbeitsblatt "Gesamt" wird die Übersicht der einzelnen Preisblätter (PB) zusammengefasst dargestellt.
Es werden aber nur die Preisblätter angezeigt, in denen eine Berechnung/Kalkulation durchgeführt wurde.
Ist ein PB leer, wird dieses nicht weiter bearbeitet. Manchmal nutze ich für einfache Kalkulationen nur ein Preisblatt, manchmal mehrere.
Ich kann die Arbeitsmappe per Mail als PDF versenden und habe mir dazu eine VBA Routine aufgebaut.
Was ich nicht hinkriege, ist, dass ich nur die Preisblätter als PDF exportiere in denen auch ein Wert steht.
Für den PDF Export habe ich folgenden Code angewendet:
Sheets(Array("Gesamt", "Deckblatt", "Materialkostenübersicht", "PB1", "PB2", "PB3", "PB4"...., "PB15")).Select
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=AWS, _ ' AWS ist der String zum Dateinamen und Speicherpfad
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Wie lassen sich die Parameter "PB1", "PB2" usw. als Variable anwenden und nur dann mit exportieren wenn zum Beispiel in der Zelle "L14" eines Preisblattes ein Wert größer Null steht, bzw. das Blatt nicht exportieren wenn der Wert Null ist?
Liebe Grüße Michael

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auswahl von Arbeitsblättern Excel
03.03.2020 19:49:36
Arbeitsblättern
Hallo Michael,
so sollte das laufen (da keine Datei gepostet, ungetestet):
Dim obj_wks As Worksheet
Dim bol_speichern As Boolean
For Each obj_wks In ThisWorkbook.Worksheets
If Left(obj_wks.Name, 2) = "PB" And obj_wks.Range("L14")  "" Then
bol_speichern = True
ElseIf obj_wks.Name = "Deckblatt" Or obj_wks = "Gesamt" Or obj_wks.Name = "Materialkostenü _
bersicht" Then
bol_speichern = True
Else
bol_speichern = False
End If
If bol_speichern = True Then
obj_wks.ExportAsFixedFormat Type:=xlTypePDF, Filename:=AWS, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End If
Next
Gruß Regina
Anzeige
AW: Auswahl von Arbeitsblättern Excel
03.03.2020 20:06:17
Arbeitsblättern
Hallo Regina,
das ist ja klasse das Du Dir die Zeit genommen hast mir zu antworten. Ich werde Deinen Tip morgen mal ausprobieren und berichten.
Vielen Lieben Dank, Grüße und noch einen schönen Abend.
Michael
AW: Auswahl von Arbeitsblättern Excel
03.03.2020 19:56:10
Arbeitsblättern
Hi Michael,
versuch mal:

Dim larPBs() As String, lboNot As Boolean, liSh As Integer, liIdx As Integer
ReDim larPBs(0)
For liSh = 1 To Sheets.Count
If Left(Sheets(liSh).Name, 2) = "PB" then
For liIdx = 0 To UBound(larPBs)
If Sheets(liSh).Name = larPBs(liIdx) Then
lboNot = True
Exit For
End If
Next
If lboNot = True Then
lboNot = False
Else
larPBs(UBound(larPBs)) = Sheets(liSh).Name
ReDim Preserve larPBs(UBound(larPBs) +1)
End If
End If
Next
larPBs(UBound(larPBs)) = "Gesamt"
ReDim Preserve larPBs(UBound(larPBs) +1)
larPBs(UBound(larPBs)) = "Deckblatt"
ReDim Preserve larPBs(UBound(larPBs) +1)
larPBs(UBound(larPBs)) = "Materialkostenübersicht"
Sheets(larPBs).Select
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=AWS, _ ' AWS ist der String zum Dateinamen und Speicherpfad
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Hilfts?
Wenn nicht, zeig uns bitte per Upload eine Bsp-Datei mit den 3 Haupttabellen und mehreren PBx-Tabellen.
Ciao
Thorsten
Anzeige
hab das Wichtigste vergessen^^
03.03.2020 20:11:10
Oberschlumpf
Hi Michael,
hab ganz vergessen, zu prüfen, ob in PBx diese eine Zelle nicht leer, bzw größer 0 ist.
Änder mal diesen Code

larPBs(UBound(larPBs)) = Sheets(liSh).Name
ReDim Preserve larPBs(UBound(larPBs) +1)

um in

If Sheets(liSh).Range("L14").Value > 0 Then
larPBs(UBound(larPBs)) = Sheets(liSh).Name
ReDim Preserve larPBs(UBound(larPBs) +1)
End If

Jetzt sollte es gehen.
Und? Hilfts?
Ciao
Thorsten
AW: hab das Wichtigste vergessen^^
04.03.2020 17:20:26
Michael
Hallo Thorsten,
Habe dank Deiner Unterstützung heute richtig „Meter“ gemacht und meine Datei jetzt endlich fertig.
Habe alles durchgetestet und es funktioniert super.
Ich verstehe aber leider Deinen Code nicht :-)
Meine VBA Kenntnisse sind nur rudimentär und ich versuche mir die Dinge anzueignen.
Wenn Du mal Lust und Zeit hast, könntest Du mir erklären was genau da abläuft? Würde die Programmzeilen gerne besser verstehen.
LG Michael
Anzeige
AW: Auswahl von Arbeitsblättern Excel
04.03.2020 08:05:08
Arbeitsblättern
Hallo und Guten Morgen Oberschlumpf,
vielen Dank für Deine Unterstützung!
Das funktioniert super! Habe noch nicht alles getestet. Aber ich bin mir sicher das passt.
Ganz toll!!!!!
Liebe Grüße Michael
AW: Auswahl von Arbeitsblättern Excel
04.03.2020 18:33:48
Arbeitsblättern
Hi Michael,
hier mein Erklärungsversuch:
https://www.herber.de/bbs/user/135621.txt
Ich hoffe, du kannst was lernen, weil besser bekomm ich es mit Erklärung nicht hin.
Hilfts?
Ciao
Thorsten
AW: Auswahl von Arbeitsblättern Excel
04.03.2020 18:49:32
Arbeitsblättern
Hallo Thorsten,
ich klinke mich hier nochmal mit einer Frage ein.
Mein Ansatz war insofern nicht zielführend, weil dann jedes Blatt einzeln als pdf gespeichert worden wäre.
Was mich an Deinen Ansatz interessiert, ist die innere Schleife. Warum meinst Du, dass noch überprüft werden muss, ob das Blatt im Array bereits vorhanden ist? Eigentlich sollte die äußere Schleife doch jedes Blatt nur einmal "anfassen". Oder hast Du da andere Erfahrungen gemacht.
ich arbeite häufig mit dieser for-each-Schleife und hatte noch nie das Problem, dass Blätter doppelt angefasst wurden.
Gruß Regina
Anzeige
JETZT, wo du es sagst :-)
04.03.2020 22:57:58
Oberschlumpf
Hi Regina,
ja, danke für den Hinweis. In diesem Fall ist die innere Schleife tatsächlich nicht erforderlich, weil ja mit der äußeren For/Next jeder Tabellenname wirklich - nur einmal - "angefasst" wird.
Es handelt sich um einen "Flüchtigkeitsfehler" von mir.
Ich arbeite sehr oft mit diesem Konstrukt um das Ziel zu erreichen, jeden Wert - nur einmal - in einem Array zu sammeln.
Na ja, und bei anderen Szenarien (Datentabellen, etc) kommt es halt vor, dass oft doppelte Werte enthalten sind.
Ich hab für die Lösung für Michael einfach nur diese Script-Variante äußere+innere For/Next-Kontrolle übernommen und angepasst.
Deine Verwirrung ist verständlich, da die innere For/Next nicht erforderlich gewesen wäre.
Ciao
Thorsten
Anzeige
AW: JETZT, wo du es sagst :-)
05.03.2020 15:41:35
Regina
Hi Thorsten,
ich habe auch einige "Bausatz-Codes", die ich immer wiedre verwende ... Insofern kann ich das nachvollziehen. Danke für die Erklärung.
Gruß Regina
AW: Auswahl von Arbeitsblättern Excel
04.03.2020 19:59:05
Arbeitsblättern
Hilft :-)
Vielen Dank! Lese mich grade durch. Werde ein Moment brauchen bis ich das alles recherchiert habe. Aber super!
Dankeschön.
Schönen Abend noch. Grüße Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige