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:
  1. Stardesktop (Nur in Ausnahmefällen erforderlich. Muss also nicht referenziert werden)
  2. 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