Seite 1 von 1
Sub Sprung_Spalte? CALC
Verfasst: Do 15. Dez 2022, 18:08
von mathiu9
Hallo, wie schreibt man ein Makro dass beim Verlassen einer Seite der Fokus
immer wieder auf die Zelle A12 der jeweiligen Seite positioniert?
Ich habe es mit dem versucht und bin dran gescheitert
Sub Sprung_Spalte_CG()
Cells(ActiveCell.Row, Columns("CG").Column).Select
End Sub
Re: Sub Sprung_Spalte? CALC
Verfasst: Sa 17. Dez 2022, 18:29
von DavidG
Hallo,
mathiu9 hat geschrieben:Ich habe es mit dem versucht und bin dran gescheitert
Ja, Du hast die Objektvariable oCell nicht referenziert.
Woher soll der arme Basic-Interpreter wissen was Du mit oCell meinst. Ausserdem muss der „Steuerungsmechanismus“ referenziert werden, damit eine Select-Anweisung umgesetzt wird.
Hierachische Liste der Objekte:
- Stardesktop (Nur in Ausnahmefällen erforderlich. Muss also nicht referenziert werden)
- ThisComponent
- ThisComponent.CurrentController → z.B. Steuerung des Cursors
- ThisComponent.Sheets → Alle Tabellenblätter innerhalb von ThisComponent
- .../Sheet(0) → Das erste Tabellenblatt
- .../Cell(…) → Die referenzierte Zelle
Als Code sieht dies dann so aus:
Code: Alles auswählen
REM ***** BASIC *****
Option Explicit
Sub Main
REM -------------------------------------------
REM Deklaration der Variablen:
Dim oDoc as Object ' Objektvariable → vordergründiges Dokument
Dim oCC as Object ' Objektvariable → CurrentController (z.B. Steuerung des Cursors)
Dim oSheet as Object ' Objektvariable → das gewünschte Sheet
Dim oCell as Object ' Objektvariable → die gewünschte Zelle
REM -------------------------------------------
REM -------------------------------------------
' Referenzierung der Objekte
oDoc= ThisComponent
oSheet=oDoc.Sheets().getByIndex(0)
oCC=oDoc.CurrentController
'xray osheet
REM -------------------------------------------
REM XRAY sagt bei Methode:
' getCellByPosition (nColumn as long, nRow as long) AS com.sun.star.table.XCell
' Die Zählung der Spalten und Zeilen beginnt bei 0, so ist:
' oSheet.getCellByPosition(0,0) = A1
' oSheet.getCellByPosition(1,1) = B2
' oCell=oSheet.getCellByPosition(nColumn,nRow)
oCell=oSheet.getCellByPosition(1,1)
'xray oCell
'xray occ
REM -------------------------------------------
' Cursor auf referenzierte Zelle positionieren
oCC.select(oCell)
End Sub
Beachte bitte diese Seite:
DE/Makro Basic Tutorial
Auf derselben Seite kannst Du Dir das Codeinspektionstool XRAY herunterladen:
Xray-Tool
und
LibreOffice-API