Zelle springen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

CeVeaR
Beiträge: 2
Registriert: So, 20.06.2021 18:52

Zelle springen

Beitrag von CeVeaR »

Hallo,
ich bräuchte ein kleines Makro mit den ich in die aktuelle Zelle eine 0 schreibe und dann eine Zelle nach oben springe und dort das selbe mache. So lange bis in Zelle G1 eine 1 steht. Ich hab nur noch keine Funktion gefunden die sozusagen die Feiltaste nach oben darstellt.

Code: Alles auswählen

sub Main
  oDoc = thisComponent  'Zugiff auf das Dokument
  oSheet = oDoc.sheets(0)  'Erstes Tabellenblatt
  oZelleA = oSheet.getCellRangeByName("G1") 
Do While oZelleA.value < 1
ThisComponent.GetCurrentSelection
ThisComponent.GetCurrentSelection.Value = "0" 

Loop
MsgBox ("ENDE")

end sub
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zelle springen

Beitrag von Stephan »

ich bräuchte ein kleines Makro mit den ich in die aktuelle Zelle eine 0 schreibe und dann eine Zelle nach oben springe und dort das selbe mache. So lange bis in Zelle G1 eine 1 steht.
z.B.:

Code: Alles auswählen

sub Main
  oDoc = thisComponent  'Zugiff auf das Dokument
  oSheet = oDoc.sheets(0)  'Erstes Tabellenblatt
  oZelleA = oSheet.getCellRangeByName("G1")
  
  sr = ThisComponent.GetCurrentSelection.RangeAddress.StartRow
  sc = ThisComponent.GetCurrentSelection.RangeAddress.StartColumn
  
  Do While (oZelleA.value < 1 AND sr >= 0)
    oSheet.getCellByPosition(sc, sr).Value = 0
    sr = sr - 1
  Loop
  MsgBox "ENDE"

end sub
Ich hab nur noch keine Funktion gefunden die sozusagen die Feiltaste nach oben darstellt.
am Simpelsten ist es das per Makrorecorder aufzuzeichnen:

Code: Alles auswählen

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "By"
args1(0).Value = 1
args1(1).Name = "Sel"
args1(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args1())

end sub


Gruß
Stephan
CeVeaR
Beiträge: 2
Registriert: So, 20.06.2021 18:52

Re: Zelle springen

Beitrag von CeVeaR »

Vielen Dank, mit deinen Code hat es funktiopniert.

Beim Makrorecorder hat er nach 2 Durchgängen einen Laufzeitfehler ausgesworfen.
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zelle springen

Beitrag von Stephan »

Beim Makrorecorder hat er nach 2 Durchgängen einen Laufzeitfehler ausgesworfen.
Wahrscheinlich weil Du am oberen Tabellenrand (Zeile 1) angekommen warst?

Mein Hinweis auf den Makrorekorder bezog sich auf DEine Frage:
"Ich hab nur noch keine Funktion gefunden die sozusagen die Feiltaste nach oben darstellt"

und das aufgezeichnete Makro funktioniert auch genau so, nämlich gibt EINEN Klick auf die Pfeiltaste wieder.

Das aufgezeichnete Makro führt hingegen nicht das hier aus:
"ich bräuchte ein kleines Makro mit den ich in die aktuelle Zelle eine 0 schreibe und dann eine Zelle nach oben springe und dort das selbe mache. So lange bis in Zelle G1 eine 1 steht."
weil sich darauf meine Antwort mit dem aufgezeichneten Makro nicht bezog.


Gruß
Stephan
Antworten