von Bommel » Fr, 05.07.2019 19:43
Hallo,
vielen Dank Peter!
Die Formel unter dem Link funktioniert genau richtig. Eine Hilfsspalte, in der die Daten ohne Leerzellen stehen, stört nicht.
Ich habe das Makro so geändert, dass damit auch jeweils zwei Zellen einfügt werden.
@paljass: Es werden mit dem Makro wie auch mit der Formel von excelformeln.de nur Zellen eingefügt, keine Zeilen.
Wie das bei den Google Sheets ist, weiß ich nicht. Da ist zwar hauptsächlich von Zeilen die Rede,
aber auf der Abbildung sieht es so aus, als ob nur Zellen eingefügt werden.
Der Autor unterscheidet vielleicht nicht zwischen Zellen und Zeilen, denn an einer Stelle schreibt er "cells/rows".
Freundliche Grüße und vielen Dank!
Makro:
Code: Alles auswählen
rem -- Quelle: https://ask.libreoffice.org/en/question/8436/how-to-insert-empty-cells-between-non-empty-cells-in-the-entire-column/
rem -- Im Makro hier gegenüber dem Original-Makro gemachte Änderungen:
rem -- Alle Zeilen in denen args4 vorkommt, wurden hinzugefügt,
rem -- damit nach jeder Zeile 2 leere Zellen eingefügt werden.
rem -- Ursprünglich wurde nach jeder Zeile nur eine leere Zelle eingefügt.
rem -- Außerdem wurde args3(0).Value = 2 in args3(0).Value = 3 geändert.
sub SpacerMacro
rem -- This macro will Insert/ShiftCellsDown to space out a column of cells
rem -- Run the macro beginning with the first cell of the column selected.
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1 as integer
dim args2(0) as new com.sun.star.beans.PropertyValue
dim args3(1) as new com.sun.star.beans.PropertyValue
dim args4(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Flags"
args2(0).Value = "V"
args3(0).Name = "By"
args3(0).Value = 1
args3(1).Name = "Sel"
args3(1).Value = false
args4(0).Name = "Flags"
args4(0).Value = "V"
rem --- Need to shift down one cell initially before inserting
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args3())
rem --- After that, it needs to shift down 2 cells each time,
rem --- the one it just inserted and the the next non-empty one.
args3(0).Value = 3
rem ---- CHANGE THE "to " NUMBER TO SUIT YOUR NUMBER OF ROWS TO SPACE
for args1= 1 to 50
dispatcher.executeDispatch(document, ".uno:InsertCell", "", 0, args2())
dispatcher.executeDispatch(document, ".uno:InsertCell", "", 0, args4())
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args3())
next args1
end sub
Hallo,
vielen Dank Peter!
Die Formel unter dem Link funktioniert genau richtig. Eine Hilfsspalte, in der die Daten ohne Leerzellen stehen, stört nicht.
Ich habe das Makro so geändert, dass damit auch jeweils zwei Zellen einfügt werden.
@paljass: Es werden mit dem Makro wie auch mit der Formel von excelformeln.de nur Zellen eingefügt, keine Zeilen.
Wie das bei den Google Sheets ist, weiß ich nicht. Da ist zwar hauptsächlich von Zeilen die Rede,
aber auf der Abbildung sieht es so aus, als ob nur Zellen eingefügt werden.
Der Autor unterscheidet vielleicht nicht zwischen Zellen und Zeilen, denn an einer Stelle schreibt er "cells/rows".
Freundliche Grüße und vielen Dank!
Makro:
[code]rem -- Quelle: https://ask.libreoffice.org/en/question/8436/how-to-insert-empty-cells-between-non-empty-cells-in-the-entire-column/
rem -- Im Makro hier gegenüber dem Original-Makro gemachte Änderungen:
rem -- Alle Zeilen in denen args4 vorkommt, wurden hinzugefügt,
rem -- damit nach jeder Zeile 2 leere Zellen eingefügt werden.
rem -- Ursprünglich wurde nach jeder Zeile nur eine leere Zelle eingefügt.
rem -- Außerdem wurde args3(0).Value = 2 in args3(0).Value = 3 geändert.
sub SpacerMacro
rem -- This macro will Insert/ShiftCellsDown to space out a column of cells
rem -- Run the macro beginning with the first cell of the column selected.
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1 as integer
dim args2(0) as new com.sun.star.beans.PropertyValue
dim args3(1) as new com.sun.star.beans.PropertyValue
dim args4(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Flags"
args2(0).Value = "V"
args3(0).Name = "By"
args3(0).Value = 1
args3(1).Name = "Sel"
args3(1).Value = false
args4(0).Name = "Flags"
args4(0).Value = "V"
rem --- Need to shift down one cell initially before inserting
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args3())
rem --- After that, it needs to shift down 2 cells each time,
rem --- the one it just inserted and the the next non-empty one.
args3(0).Value = 3
rem ---- CHANGE THE "to " NUMBER TO SUIT YOUR NUMBER OF ROWS TO SPACE
for args1= 1 to 50
dispatcher.executeDispatch(document, ".uno:InsertCell", "", 0, args2())
dispatcher.executeDispatch(document, ".uno:InsertCell", "", 0, args4())
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args3())
next args1
end sub
[/code]