Seite 1 von 1
Letzte Zelle auslesen
Verfasst: Fr, 02.06.2006 09:30
von migges
Hallo,
ich bräucht für ein bestehendes Makro die letzt Zelle. Also ich möchte das gleiche ereichen als wenn ich strg+ende drücke, mit dem unterschied das er die Zelle in eine Variable speichert.
Ich möchte dann zB den Wert G78 haben oder so.
Hat evtl jemand eine Idee wie man das umsetzen kann?
Danke im Voraus
mfg
Verfasst: Fr, 02.06.2006 09:59
von migges
Ich habe mir mal selber was zusammen gebastelt. Es funktioniert, jedoch is der Code nicht der schönste.
Gerade der Sprung auf die letzte Zelle bereitet mir Schwierigkeiten. Habe das erste Stück per Makro aufzeichnen realisiert.
Evtl kann ja mal jemand daran herumschnippel
Code: Alles auswählen
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(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Sel"
args1(0).Value = false
dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args1())
oSelect=ThisComponent.CurrentSelection.getRangeAddress
oSelectColumn=ThisComponent.CurrentSelection.Columns
oSelectRow=ThisComponent.CurrentSelection.Rows
CountColumn=oSelectColumn.getCount
CountRow=oSelectRow.getCount
oSelectSC=oSelectColumn.getByIndex(0).getName
oSelectEC=oSelectColumn.getByIndex(CountColumn-1).getName
oSelectSC=oSelectColumn.getByIndex(0).getName
oSelectEC=oSelectColumn.getByIndex(CountColumn-1).getName
oSelectSR=oSelect.StartRow+1
oSelectER=oSelect.EndRow+1
NoCell=(CountColumn*CountRow)
oSelectAC=oSelect.StartColumn+0
oSelectAR=oSelect.StartRow+0
MsgBox(oSelectSC + oSelectSR)
Verfasst: Fr, 02.06.2006 17:34
von Stephan
Gerade der Sprung auf die letzte Zelle bereitet mir Schwierigkeiten.
Ja und Wieso? Der Code von Dir ist doch perfekt dafür:
Code: Alles auswählen
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(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Sel"
args1(0).Value = false
dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args1())
Also ich möchte das gleiche ereichen als wenn ich strg+ende drücke
exakt das macht der Code (falls bei Dir nicht, dann sage was er sonst tut)
mit dem unterschied das er die Zelle in eine Variable speichert.
Ich möchte dann zB den Wert G78 haben oder so.
zwei verschiedene Dinge, einmal ein Zellobjekt und einmal die Adresse einer Zelle, aber Beides macht Dein Code. Die Adresse kommt in der Message-Box und die Zelle (als Objekt) wäre beispielsweise zu erreichen über:
Bis auf die eine Codezeile (die Du sicher auch selbst gewußt hättest) verstehe ich Dein Problem nicht, denn alles geht doch bereits.
Gruß
Stephan