VBA mehrere Tabellen zur PDF zusammenfügen?

Hallo,

ich habe ein kleines Problem mit dem Erstellen von mehreren PFD-Seiten aus unterschiedlichen Tabellenblätter. Je nach Erfüllung der Bedingung (If-Abfrage) wird eine PDF erstellt.

Sofern nur ein eine Tabelle angesprochen wird, gibt es keine Probleme mit der Erstellung. Dabei ist es egal, ob die Tabelle oder zwei Seiten hat. Die Formatierung/Range ist korrekt und das Makro läuft durch.


Sheets("DUZ").Select
Range("A1:Y52").Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Aber soweit ich auf zwei oder mehr Tabellenblätter zugreife, gibt es Probleme:

Sheets(Array("Deckblatt", "Übersicht", "Tagebuch", "Ges", "Reisekosten", "DUZ")).Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Tagebuch_RZ_DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Wie kann ich entsprechend die Range unterbringen, sodass es evtl. problemlos klappt?

'Sheets("Deckblatt").Select --> Hochformat (1 Seite)
'Range("A1:H43").Select
                    
'Sheets("Übersicht").Select --> Querformat (1 Seite)
'Range("A1:R35").Select
                    
'Sheets("Tagebuch").Select --> Hochformat (6 Seiten)
'Range("A1:V146").Select
                    
'Sheets("Ges").Select --> Hochformat (1 Seite)
'Range("A1:G43").Select
                    
'Sheets("DUZ").Select --> Querformat (2 Seiten)
'Range("A1:Y52").Select
                    
'Sheets("Reisekosten").Select --> Hochformat (1 Seite)
'Range("A1:N57").Select

Aktueller Fehlerhinweis: Anwendungs- oder objektdefinierter Fehler.

Ich hatte es auch mal wie folgt versucht, aber dann stimmt die Formatierung nicht (wenn es einzeln gespeichert wird, ist sie aber richtig). Außerdem wird dann beim Schreibschutz rumgemeckert (am Ende werden die Blätter wieder mit Schreibschutz versehen). Jedenfalls gibt es diese Probleme beim einzelnen nicht.

Sheets("DUZ").Select
Range("A1:Y52").Select
                    
Sheets("Reisekosten").Select
Range("A1:N57").Select

Sheets(Array("Reisekosten", "DUZ")).Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Reisekosten_DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Hat jemand eine Idee?
Gruß
Computer, Microsoft Excel, Technik, programmieren, VBA, Technologie
Excel Zeiten erfassen?

Hallo zusammen,

ich habe folgende Problem in Excel. Ich möchte einen gewissen Zeitraum aus Stundenaufzeichnungen in Tag- und Nachtzeit unterscheiden.

Dabei geht die Tagzeit von 06:00 - 20:00 Uhr und die Nachtzeit von 21:59 - 05:59 Uhr.

In B4 steht die Uhrzeit des Arbeitsbeginn und in C4 das Ende. Diese sind in Format Uhrzeit formatiert. Die entsprechenden Zahlenformate zu der Uhrzeit sind in AB4 (Beginn) und AC4 (Ende).

Nun möchte ich, wenn die Arbeitszeit z.b. von 04:00 Uhr - 23:00 Uhr geht, dass entsprechend richtig die Stundenanzahl in Tag und Nacht unterschieden wird. Die Uhrzeit kann auch tagesübergreifend sein z.B. 19:00 - 07:00 Uhr. dabei ist jede erdenkliche Möglichkeit innerhalb eines Tages (24 Stunden) möglich.

Beispiel:
Bei der Arbeitszeit von 19:00 - 07:00 Uhr sind 2 Tagstunden (19:00-20:00 + 06:00 - 07:00) und 10 Nachtstunden (20:00 - 00:00 + 00:00 - 06:00).

fehlerhafte Formel für die Tageszeit als Zahl in Zelle Z4:

=WENN(ODER(D4<>"A";AB4="";AC4="");0;WENN(UND(AC4<=AB4;AC4>=Adm!$F$7);(Adm!$F$8-B4)+(C4-Adm!$F$7);WENN(UND(AB4>=6;AC4<=20);(C4-B4);WENN(UND(AB4>=6;AC4>=20);Adm!$F$8-B4;WENN(UND(AB4<=6;AC4<=20);C4-Adm!$F$7;WENN(UND(AB4<=6;AC4>=20);Adm!$F$8-Adm!$F$7;WENN(AC4<AB4;WENN(UND(AC4<AB4;AC4<=6);(Adm!$F$8-B4);""))))))))

fehlerhafte Formel für die Nachtzeit als Zahl in Zelle AA4:

=WENN(ODER(D4<>"A";B4="";C4="");0;WENN(UND(AB4<6;AC4>20);(Adm!$F$7-B4)+(C4-Adm!$F$8);WENN(AB4<6;Adm!$F$7-B4;WENN(AC4>20;C4-Adm!$F$8;0))))

In der Zelle: "Adm!$F$7" steht als Uhrzeit formatiert 06:00 und "Adm!$F$8" steht die Uhrzeiten 20:00 Uhr.

Vielleicht hat jemand eine Idee und kann die Formeln korrigieren oder hat entsprechend einen besseren/richtigen Ansatz. Problem bei der ganzen Sache ist einfach, das hier auch Tagesübergreifend gearbeitet wird und entsprechend das Ende "kleiner" ist als der Anfang. Ich habe die Vermutung, dass mit "+1" gearbeitet werden muss, aber bin da leider raus.

Gruß

Bild zum Beitrag
Computer, Microsoft, Microsoft Excel, programmieren
VBA mehrere Textboxen außer XY auf Inhalt prüfen?

Hallo zusammen,

kann man für mehrere Textboxen bis auf Ausnahmen den gleichen Inhalt prüfen?

Zu Sache: Ich habe ein Userform mit einer Multiseite mit 10 Pages. Jeder Page hat 63 Textboxen, ergo 630 Textboxen im gesamten Userform.

Von diesen 630 Textboxen muss in 620 Textboxen geprüft werden, ob diese entweder leer sind oder eine Uhrzeit steht. Wenn dieses der Fall ist, dann ist alles Ok. Ansonsten soll entsprechend der Vorgang abgebrochen werden.

Die 620 Textboxen haben alle individuelle Namen wie (AN1t1a, AN1t1e, AN1t2a usw.) Dies ist nach einem bestimmten Muster.

Die restlichen Textboxen, die NICHT geprüft werden sollen haben Namen wie (AN_Name1, AN_Name2, AN_Name3 usw. bis 10).

Wie können nun alle 620 Textboxen auf folgendes Format geprüft werden:

Private Function CheckTime(ByVal txt As String) As Boolean

If txt.Length <> 5 or txt.Length <> 0 Then
Return False
End If

If txt(0) >= "3" Then
Return False
End If

If txt(0) = "2" AndAlso txt(1) >= "4" Then
Return False
End If

If txt(2) <> ":" Then
Return False
End If

If txt(3) = "0" AndAlso txt(4) <> "0" Then
Return False
End If

If txt(3) = "1" AndAlso txt(4) <> "5" Then
Return False
End If

If txt(3) = "2" Then
Return False
End If

If txt(3) = "3" AndAlso txt(4) <> "0" Then
Return False
End If

If txt(3) = "4" AndAlso txt(4) <> "5" Then
Return False
End If

If txt(3) > "4" Then
Return False
End If

Return True
End Function  

Falls die Prüfung auf die korrekte Uhrzeit fehlerhaft ist oder auch einfacher geht, nehme ich die Hilfe auch gerne an :) Erlaubte Uhrzeiten sollen im Forma HH:MM sein und im Viertelstunden Takt (10:00, 10:15, 10:30, 10:45) erlaubt sein. Nur Zahlen sind nicht möglich, da es auch einen Doppelpunkt gibt ;)

Gruß

Computer, Computerspiele, Microsoft Excel, programmieren, VBA