Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Seitenumbruch nach Spalte A verhindern
#1
Code:
Sub PDF_erstellen()
Dim lngV As Long
  Dim oHP As HPageBreak
  Dim rngA As Range, rngB As Range, rngC As Range
  Application.ScreenUpdating = False
  With Worksheets("Unterrichtsbesuch")
    .Activate
    Set rngC = ActiveCell
    .Cells(.Rows.Count, 1).Select
    'Zeilen ausblenden wenn Zelle leer'
    Worksheets("Unterrichtsbesuch").Unprotect Password:="Besuch"
    Range("18:19").EntireRow.Hidden = WorksheetFunction.CountA(Range("B19")) = 0
    Range("27:28").EntireRow.Hidden = WorksheetFunction.CountA(Range("B28")) = 0
    Range("36:37").EntireRow.Hidden = WorksheetFunction.CountA(Range("B37")) = 0
    Range("44:45").EntireRow.Hidden = WorksheetFunction.CountA(Range("B45")) = 0
    Range("53:54").EntireRow.Hidden = WorksheetFunction.CountA(Range("B54")) = 0
    Range("63:64").EntireRow.Hidden = WorksheetFunction.CountA(Range("B64")) = 0
    Range("72:73").EntireRow.Hidden = WorksheetFunction.CountA(Range("B73")) = 0
    Range("79:80").EntireRow.Hidden = WorksheetFunction.CountA(Range("B80")) = 0
    Range("89:90").EntireRow.Hidden = WorksheetFunction.CountA(Range("B90")) = 0
    Range("99:100").EntireRow.Hidden = WorksheetFunction.CountA(Range("B100")) = 0
    Range("104:120").EntireRow.Hidden = WorksheetFunction.CountA(Range("B107")) = 0
    Range("109:112").EntireRow.Hidden = WorksheetFunction.CountA(Range("B109")) = 0
    Range("111:112").EntireRow.Hidden = WorksheetFunction.CountA(Range("B111")) = 0
    Range("113:120").EntireRow.Hidden = WorksheetFunction.CountA(Range("B115")) = 0
    Range("117:120").EntireRow.Hidden = WorksheetFunction.CountA(Range("B117")) = 0
    Range("119:120").EntireRow.Hidden = WorksheetFunction.CountA(Range("B119")) = 0
    Range("126:127").EntireRow.Hidden = WorksheetFunction.CountA(Range("B127")) = 0
    Range("133:134").EntireRow.Hidden = WorksheetFunction.CountA(Range("B134")) = 0
    Range("B139").EntireRow.Hidden = WorksheetFunction.CountA(Range("B139")) = 0
    Range("141:142").EntireRow.Hidden = WorksheetFunction.CountA(Range("B142")) = 0
    Range("147:148").EntireRow.Hidden = WorksheetFunction.CountA(Range("B148")) = 0
    Range("160:161").EntireRow.Hidden = WorksheetFunction.CountA(Range("B161")) = 0
    lngV = ActiveWindow.View
    ActiveWindow.View = xlPageBreakPreview
    .ResetAllPageBreaks
   
    'Zeilen, die bei einem allfälligen Seitenumbruch zusammengehalten werden sollen'
    Set rngB = Range("11:22,23:31,32:40,41:48,49:57,58:67,68:76,77:83,84:93,94:103,104:120,121:135,136:155,156:166")
    For Each rngA In rngB.Areas
      For Each oHP In .HPageBreaks
        If Not Intersect(rngA.Offset(1).Resize(rngA.Rows.Count - 2), oHP.Location) Is Nothing Then
          .HPageBreaks.Add rngA
        End If
      Next oHP
    Next rngA
  ActiveWindow.View = xlNormalView
  End With
  rngC.Select
    Application.ScreenUpdating = True

'PDF erstellen und Vorschau des Bereiches A:B im Arbeitsblatt Besuch'
  Range("A:B").ExportAsFixedFormat Type:=xlTypePDF, OpenAfterPublish:=True

End Sub

Liebe Leute

Hab obigen Code, der auf meinem PC soweit gut klappt. Zeilen werden ausgeblendet und Zeilen bei einem Seitenumbruch zusammengehalten und ein PDF wird erstellt.

Das Problem: In der Testphase mit anderen Usern macht es bei ihnen allerdings nach der Spalte A immer einen Seitenumbruch.

Könnt ihr mir helfen, woran dies liegen könnte?
Wie geschrieben, macht es dies bei mir nicht.

Herzlichen Dank und Gruss
mauritius5
Antworten Top
#2
Hi,

ich finde es echt super, wie lernfähig du bist und wie gut du z.B.
(02.02.2023, 15:01)HKindler schrieb:
  • wieso verwendest du Range("18:19").EntireRow.Hidden = WorksheetFunction.CountA(Range("B19")) = 0 statt .Range("18:19").EntireRow.Hidden = .Range("B19") = "" oder noch besser .Rows("18:19").Hidden = .Range("B19") = ""
umgesetzt hast. [/Ironie]
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#3
(16.02.2023, 14:58)HKindler schrieb: Hi,

ich finde es echt super, wie lernfähig du bist und wie gut du z.B.  umgesetzt hast. [/Ironie]
Vielen Dank für deine Antwort.

Der andere Code funktioniert ja auch, deshalb habe ich die Anpassung dazumal wahrscheinlich nicht vorgenommen. Habs nun gemacht aber es versteht sich von selbst, dass damit mein jetziges Problem leider nicht behoben werden konnte.

Sonst noch eine Idee, an was dies liegen könnte?

(16.02.2023, 14:58)HKindler schrieb: Hi,

ich finde es echt super, wie lernfähig du bist und wie gut du z.B.  umgesetzt hast. [/Ironie]

Hab gerade nochmal deine alte Antwort studiert. Wie ich bereits schrieb, kann ich dir die Gründe nicht sagen, da ich den Code mit eurer und der Hilfe von Google etc. zusammen gekriegt habe.

Wenn du mir beim Umschreiben helfen könntest, wäre ich natürlich noch so froh.
Antworten Top
#4
Hi,

was ich mit meiner 1. Antwort sagen wollte: solange du nichts aus den Antworten lernst, wirst du immer fragen müssen. Ich sehe mich selbst nicht als Problemlöser für Leute, die zu faul zum selber denken sind. Ich helfe gerne weiter, wenn es darum geht, etwas zu verstehen, aber ich bin nicht dazu da, anderen Leuten den Löffel in den Mund zu schieben, nur wie sie zu faul sind, diesen selber zu halten.

Dazu zählt auch, dass du aus dem anderen Thread mindestens gelernt haben solltest, dass eine Beispieldatei beim Helfen hilft. Nur aus dem Code, der laut deiner eigenen Aussage ja bei dir läuft, lässt sich das Problem nun mal nicht darstellen und somit kann man auch nicht helfen.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • mauritius5
Antworten Top
#5
(16.02.2023, 16:25)HKindler schrieb: Hi,

was ich mit meiner 1. Antwort sagen wollte: solange du nichts aus den Antworten lernst, wirst du immer fragen müssen. Ich sehe mich selbst nicht als Problemlöser für Leute, die zu faul zum selber denken sind. Ich helfe gerne weiter, wenn es darum geht, etwas zu verstehen, aber ich bin nicht dazu da, anderen Leuten den Löffel in den Mund zu schieben, nur wie sie zu faul sind, diesen selber zu halten.

Dazu zählt auch, dass du aus dem anderen Thread mindestens gelernt haben solltest, dass eine Beispieldatei beim Helfen hilft. Nur aus dem Code, der laut deiner eigenen Aussage ja bei dir läuft, lässt sich das Problem nun mal nicht darstellen und somit kann man auch nicht helfen.

Ich verstehe dich. Wenn du allerdings wüsstest, wie lange ich nun schon an diesem einen Problem am Rumprobieren bin; seit nunmehr 6 Stunden und ich bin kein bisschen weiter. Der Wille ist also da, glaube mir.

Hier die Beispieldatei. Das PW ist "Besuch".


Angehängte Dateien
.xlsm   Beispiel.xlsm (Größe: 140,69 KB / Downloads: 4)
Antworten Top
#6
Hallöchen,

also, wenn es bei Dir klappt und bei anderen usern nicht, würde ich nach eventuellen Unterschieden schauen, z.B. ob die gleiche Excelversion verwendet wird. Da machen manchmal Bruchteile von Millimetern was aus.

Du könntest auch einen Druckbereich festlegen und dann alle Spalten auf einer Seite einstellen, um das Problem umgehen. Code für die Spalteneinstellung kann man aufzeichnen und den betreffenden Teil in den vorhandenen einfügen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • mauritius5
Antworten Top
#7
(16.02.2023, 21:07)schauan schrieb: Hallöchen,

also, wenn es bei Dir klappt und bei anderen usern nicht, würde ich nach eventuellen Unterschieden schauen, z.B. ob die gleiche Excelversion verwendet wird. Da machen manchmal Bruchteile von Millimetern was aus.

Du könntest auch einen Druckbereich festlegen und dann alle Spalten auf einer Seite einstellen, um das Problem umgehen. Code für die Spalteneinstellung kann man aufzeichnen und den betreffenden Teil in den vorhandenen einfügen.

Vielen Dank für deine Antwort.
Die Lösung ist teilweise so nah. Es hat geklappt, indem ich die Spalte nur minimal schmäler machte und siehe da, bei einem Testuser klappt es plötzlich. Hätte nicht gedacht, dass verschiedene Versionen dazu beitragen könnten.

Vielen, vielen Dank!
Antworten Top
#8
Hi,

gut, dass dir jetzt geholfen ist.

Erlaube mir bitte noch ein wenig Kritik an deiner Datei.

- zunächst einmal ist es für Helfer unschön, wenn sie ein Passwort benötigen (auch wenn es mit angegeben ist)

- eine komplett leere Datei ist vor allem dann etwas hinderlich, wenn man einen Ausdruck beurteilen soll, der angeblich überflüssige leere Blätter erzeugt. Woher soll man wissen, ob ein Blatt überflüssig ist, oder dort normalerweise Daten stehen? Klar kann man das irgendwie ausknobeln, aber es kostet unnötig Zeit.

- wieso kommt als erstes die Aufforderung die Datei unter anderem Namen zu speichern? Genau für so etwas hat MS die Vorlagen (*.xltx bzw. *.xltm) geschaffen. Würde doch Sinn machen, diese zu verwenden. Sie verhalten sich so, wie eine "normale" neue Datei. Sprich beim ersten Speichern wird automatisch ein Name verlangt, bei einem weiteren Speichern dann nicht mehr. Ich denke, das ist doch genau das, was du haben willst.

- ich finde es immer unschön, wenn Menu-Leisten etc. ausgeblendet werden. Ich will mich nicht bevormunden lassen, was ich mit bzw. in einer Datei machen kann und was nicht, bzw. wie meine Arbeitsumgebung auszusehen hat.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#9
(17.02.2023, 10:30)HKindler schrieb: Hi,

gut, dass dir jetzt geholfen ist.

Erlaube mir bitte noch ein wenig Kritik an deiner Datei.

- zunächst einmal ist es für Helfer unschön, wenn sie ein Passwort benötigen (auch wenn es mit angegeben ist)

- eine komplett leere Datei ist vor allem dann etwas hinderlich, wenn man einen Ausdruck beurteilen soll, der angeblich überflüssige leere Blätter erzeugt. Woher soll man wissen, ob ein Blatt überflüssig ist, oder dort normalerweise Daten stehen? Klar kann man das irgendwie ausknobeln, aber es kostet unnötig Zeit.

- wieso kommt als erstes die Aufforderung die Datei unter anderem Namen zu speichern? Genau für so etwas hat MS die Vorlagen (*.xltx bzw. *.xltm) geschaffen. Würde doch Sinn machen, diese zu verwenden. Sie verhalten sich so, wie eine "normale" neue Datei. Sprich beim ersten Speichern wird automatisch ein Name verlangt, bei einem weiteren Speichern dann nicht mehr. Ich denke, das ist doch genau das, was du haben willst.

- ich finde es immer unschön, wenn Menu-Leisten etc. ausgeblendet werden. Ich will mich nicht bevormunden lassen, was ich mit bzw. in einer Datei machen kann und was nicht, bzw. wie meine Arbeitsumgebung auszusehen hat.

Danke für die Rückmeldung. Diese nehme ich sehr gerne auf.

Wusste nicht, dass es auch eine Vorlagendatei mit Markos gibt. Das Problem ist dann allerdings, dass die User standardmässig .xlsx zum Abspeichern erhalten. Kann dies voreingestellt werden, dass die User automatisch die .xlsm-Datei vorgeschlagen bekommen?

Das Bevormunden hat damit zu tun, dass die Enduser teilweise null Ahnung von Excel haben und wir über die gesamte Firma ein einheitliches Handling haben möchten. Mal schauen, wie die User nach der mehrmonatigen Testphase reagieren.
Antworten Top
#10
Hi,

noch eine kleine Kritik: Bitte unterlasse Vollzitate, insbesondere wenn der zitierte Text direkt darüber steht. meist reicht es zum Verständnis wenn du z.B. @mauritius5 schreibst. Wenn ein Zitat dennoch angebracht ist, dann bitte auf das nötigste beschränken.

Zu deiner Frage: man kann in den Exceloptionen das Standard-Speicherformat angeben. Das gilt dann aber nur auf dem Rechner und dort für alle Excel-Dateien. Natürlich kann man bei jedem "Speichern unter" immer noch ein anderes Format verwenden.

Man kann die Optionen auch per VBA ändern. Allerdings fände ich es gar nicht witzig, wenn du ungefragt meine Einstellungen ändern würdest (siehe meinen letzten Beitrag).
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste