Seite 1 von 1
[gelöst]Cursor über Makro positionieren
Verfasst: So, 14.03.2021 10:02
von dinner4one
Hallo,
wie platziere ich den Cursor in Calc über ein Basic Makro und wo gibt es dazu Dokumentationen.
Danke
hier mal wo ich bin:
sub test_CursorPos (Pos as string)
dim Mappe as object
dim Blatt as object
dim Bereich as object
dim BlattName as string
Mappe = ThisComponent
BlattName = Mappe.CurrentController.ActiveSheet.Name
Blatt = Mappe.Sheets.getByName(BlattName)
Bereich = Blatt.getCellRangeByName(Pos)
'ab hier ist mein latein am ende
Bereich.GotoCell ??
Bereich activate ??
end sub
Re: Cursor über Makro positionieren
Verfasst: So, 14.03.2021 11:08
von mikeleb
Hallo,
Ich verstehe noch nicht so richtig, was du vorhast.
Bereich activate
erinnert mich an meine Denkweise von MSOffice VBA.
In Calc läuftdas etwas anders. Du musst keinen Bereich aktivieren, um mit ihm etwas machen zu können.
Also: Was hast du vor?
Re: Cursor über Makro positionieren
Verfasst: So, 14.03.2021 11:17
von dinner4one
@mikeleb
Fragestellung im Betreff, stimmt
@gast
danke guter Link
Re: Cursor über Makro positionieren
Verfasst: So, 14.03.2021 11:42
von dinner4one
...so gehts:
Code: Alles auswählen
'###############################################################
function _BlattName as string
dim Mappe as object
dim Methoden as object
Mappe = ThisComponent
Methoden = Mappe.CurrentController
_BlattName = Methoden.ActiveSheet.Name
end function
'###############################################################
sub _CursorPos (Pos as string)
dim Mappe as object
dim Methoden as object
dim Blatt as object
dim Bereich as object
Mappe = ThisComponent
Methoden = Mappe.CurrentController
Blatt = Mappe.Sheets.getByName(_BlattName)
Bereich = Blatt.getCellRangeByName(Pos)
Methoden.Select(Bereich)
end sub
Re: Cursor über Makro positionieren
Verfasst: So, 14.03.2021 12:00
von Stephan
...so gehts:
das selektiert einen Zellreich, aber positioniert keinen Cursor, wonach doch eigentlich gefragt war.
"mikeleb" der sich genau an dieser Stelle wohl unsicher (wie ich auch) und der augenscheinliche Grund das "mikeleb" fragte ist das das Selektieren eines Zellbereichs leicht machbar ist, das Positionieren des Cursors in Calc hingegen nicht unbedingt.
Da man Letzteres auch kaum braucht habe ich dafür nicht einmal einen 'nativen' Code greifbar, sondern würde mit dispatcher arbeiten. Das Folgende positioniert den sichtbaren Cursor ans Ende des Textes in Zelle A1 des aktiven Tabellenblatts:
Code: Alles auswählen
Sub Main
akt_blatt = ThisComponent.CurrentController.ActiveSheet
akt_zelle = akt_blatt.getCellRangeByName("A1")
ThisComponent.CurrentController.Select(akt_zelle)
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:SetInputMode", "", 0, Array())
End Sub
Bei Writer ist das Arbeiten mit dem Cursor hingegen etwas Tagtägliches, weswegen Du reichlich Beispiele dazu im Netz findest, z.B.:
http://www.dannenhoefer.de/faqstarbasic/cursor.html
http://www.dannenhoefer.de/faqstarbasic ... sorum.html
Gruß
Stephan