Marko Code um Zellen erweitern ?!
#1
Hallo,
ich bin noch neu in Makro und habe mir das aufgezeichnet:

Code:
function main(workbook: ExcelScript.Workbook) {
    let selectedSheet = workbook.getActiveWorksheet();
    // Add horizontal page break at top left of cell 1!A37234
    selectedSheet.addHorizontalPageBreak(selectedSheet.getRange("A37234"));

}
Wie kann ich Excel nun sagen, bzw in den Code eintragen, er soll diesen Befehl von Zeile 37234 bis Zeile 40509 durchführen?

Könnt mir hier einer helfen ?
Antworten Top
#2
.. und Du möchtest für jede Zeile einen Umbruch?

im Prinzip mit einer Schleife

for iCnt=37234 to 40509
selectedSheet.addHorizontalPageBreak(selectedSheet.getRange("A" & iCnt));
next

Zeichensetzung und genaue Syntax musst Du mal schauen, das ist jetzt mit vba gemixt ...

wenn es nicht zu jeder Zeile soll dann am Ende der for - Zeile mit Step xxx eine Schrittweite festlegen.
.      \\\|///      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:
  • sfina
Antworten Top
#3
Ja genau einen Umbruch, weil Drop&Copy und runterziehen  klappt nicht.
Aber hier ist jetzt mein Problem, ich wüsste nicht, welchen Syntax ich da einfügen müsste.
Es ist ja im Prinzip der komplette Code, den ich erhalten habe. Da muss jetzt nur irgendwie dein Teil rein..

Ich habe jetzt das auch nur mit dem Aufzeichnen versucht, aber bei VBA bin ich raus, da habe ich wirklich keine Ahnung von.
Antworten Top
#4
Hi,

leider habe ich von Excel-Skript noch keine Ahnung, aber da ich VBA kenne und mal neugierig auf Excel-Skript bin, habe ich den Edge-Copilot mit genau deiner Frage gefüttert. Er sagt dazu:

Zitat:Copilot
Willkommen in der Welt der Excel-Skripte! Du hast bereits einen guten Start gemacht. Um deinen Code so zu erweitern, dass horizontale Seitenumbrüche von Zeile 37234 bis 40509 eingefügt werden, kannst du eine Schleife verwenden.

Hier ist ein Beispiel, wie du das machen kannst:

Code:
function main(workbook: ExcelScript.Workbook) {
  let selectedSheet = workbook.getActiveWorksheet();

  // Schleife von Zeile 37234 bis 40509
  for (let row = 37234; row <= 40509; row++) {
    selectedSheet.addHorizontalPageBreak(selectedSheet.getRange(`A${row}`));
  }
}

Was dieser Code macht:
Er geht jede Zeile von 37234 bis 40509 durch.
In jeder dieser Zeilen wird ein horizontaler Seitenumbruch an der Spalte A gesetzt.

Hinweis:
Das Einfügen von so vielen Seitenumbrüchen kann Excel stark verlangsamen oder sogar zum Absturz bringen, je nach Größe der Datei. Überlege dir, ob du wirklich jede einzelne Zeile brauchst oder ob z. B. alle 50 oder 100 Zeilen ausreichen würden. Falls ja, kannst du die Schleife so anpassen:

Code:
for (let row = 37234; row <= 40509; row += 50) {
  selectedSheet.addHorizontalPageBreak(selectedSheet.getRange(`A${row}`));
}

Möchtest du das vielleicht so anpassen, dass es effizienter läuft? Oder soll ich dir helfen, das Skript direkt in Excel zu testen?
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • sfina
Antworten Top
#5
Danke...

also er führt es aus, bis Zeile 38256, dann meldet er einen Scripfehler ?!
Antworten Top
#6
Hi,

wenn du den ersten Code genommen hast, dann hast du 38256 - 37234 = 1022 neue Seitenumbrüche eingefügt.
1024 ist so eine typische Computergrenze. Vermutlich lässt Excel nicht mehr Seitenumbrüche zu. Kannst du ja mal testen, ob du händisch noch welche einfügen kannst. Dodgy

Was willst du eigentlich mit so vielen Seitenumbrüchen?
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • sfina
Antworten Top
#7
Ja das ist tatsächlich das Problem. :/

Ich habe eine Datei, mit etwa ca 44.000 Zeilen, die sind in ca 3000 Gruppen aufgeteilt. Zwischen jeder Gruppe ist eine Leerzeile
Ich suche mir dann aus den 3000 Gruppen quasi eine Artikelnummer raus, und drucke dann eben nur diese besagte Seite aus.
Weil immer nur Eine Gruppe exakt auf ein Blatt soll. Es sind täglich andere Gruppen die benötigt werden.
Antworten Top
#8
Hallo,

du könntest mit dem Autofilter das Blatt nach deiner Gruppe filtern. Es werden nur die sichtbaren Zeilen gedruckt. Alternativ mit dem Spezialfilter die gewünschte Gruppe auf ein neues Blatt übertragen, dieses dann ausdrucken.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • sfina
Antworten Top
#9
Hi,

"Leerzeile" das klingt nach einem schlechten Tabellenaufbau. Kannst du mal eine kleine Beispieldatei hier hochladen? Dann kann man sicherlich einen Vorschlag für einen besseren Aufbau machen. Wenn dieser gut ist, dann lässt sich der Tipp von Klaus-Dieter ganz einfach umsetzen.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • sfina
Antworten Top
#10
Danke euch allen, ich hab jetzt einfach weniger Leerzeilen reingemacht und die Gruppen verkleinert. Nicht ideal aber das passt schon so.
Danke euch !
Antworten Top


Gehe zu:


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