Dynamisches Diagramm

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Genuin
Beiträge: 4
Registriert: So, 27.06.2004 02:43

Dynamisches Diagramm

Beitrag von Genuin »

Hallo ich bin noch vollkommen neu bei Oo mein Problem ist wie kann ich dynamisch den Bereich eines Diagramms verändern?
das Makro aufzeichnen bringt mir das:

Code: Alles auswählen

sub chart
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 = "Nr"
args1(0).Value = 1

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

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:StarChartDataDialog", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(3) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Name"
args3(0).Value = "Object 1"
args3(1).Name = "Range"
args3(1).Value = "$Tabelle2.$A$1:$A$2;$Tabelle2.$C$1:$C$2"
args3(2).Name = "ColHeaders"
args3(2).Value = true
args3(3).Name = "RowHeaders"
args3(3).Value = true

dispatcher.executeDispatch(document, ".uno:ChangeChartData", "", 0, args3())
end sub
wenn ich den nun aber abändere

Code: Alles auswählen

 dim args3(3) as new com.sun.star.beans.PropertyValue
 args3(0).Name = "Name"
 args3(0).Value = "Object 1"
 args3(1).Name = "Range"
 temp = "$Tabelle2.$A$1:$A$" & i+1 & " ;$Tabelle2.$B$1:$B$" & i+1
 args3(1).Value = temp
 args3(2).Name = "ColHeaders"
 args3(2).Value = true
 args3(3).Name = "RowHeaders"
 args3(3).Value = true

 dispatcher.executeDispatch(document, ".uno:ChangeChartData", "", 0, args3())

macht er nichts mehr i is vom typ integer. :roll: :twisted: . Was mach ich falsch?
Genuin
Beiträge: 4
Registriert: So, 27.06.2004 02:43

Beitrag von Genuin »

ich ermittle i vorher in einer schleife:

Code: Alles auswählen

Dim i As Integer
 i = 0
 '-------------------------------------
 ' Zelle A1 liegt auf Position 0,0 
 oZelle = oTabellenblatt.getCellByPosition( 0, 0 )
 'msgbox oZelle.type
 '--------------------------------------
Do While oZelle.type <> com.sun.star.table.CellContentType.EMPTY 
	i=i+1
 	oZelle = oTabellenblatt.getCellByPosition( 0, i )
 	'msgbox oZelle.string
 	
 loop
selbs beim debuggen hat er:
[quote]
temp = $Tabelle2.$A$1:A$12;Tabelle2.$B1:$B$12
i = 11
er weißt dann aber trotzdem keine Werte zu
aber irgendwie scheint der aufruf auch falsch zu sein

Code: Alles auswählen

 dim args3(3) as new com.sun.star.beans.PropertyValue
 args3(0).Name = "Name"
 args3(0).Value = "Object 1"
 args3(1).Name = "Range"
[b] temp = "$Tabelle2.$A$1:$A$12;$Tabelle2.$B$1:$B$12"[/b]
 args3(1).Value = temp
 args3(2).Name = "ColHeaders"
 args3(2).Value = true
 args3(3).Name = "RowHeaders"
 args3(3).Value = true

 dispatcher.executeDispatch(document, ".uno:ChangeChartData", "", 0, args3())
oder

Code: Alles auswählen

 dim args3(3) as new com.sun.star.beans.PropertyValue
 args3(0).Name = "Name"
 args3(0).Value = "Object 1"
 args3(1).Name = "Range"
[b] args3(1).Value = "$Tabelle2.$A$1:$A$12;$Tabelle2.$B$1:$B$12"[/b]
 args3(2).Name = "ColHeaders"
 args3(2).Value = true
 args3(3).Name = "RowHeaders"
 args3(3).Value = true

 dispatcher.executeDispatch(document, ".uno:ChangeChartData", "", 0, args3())
klappt nicht
Genuin
Beiträge: 4
Registriert: So, 27.06.2004 02:43

Beitrag von Genuin »

hmm also bei:

Code: Alles auswählen

 dim args3(3) as new com.sun.star.beans.PropertyValue
 args3(0).Name = "Name" 
 args3(0).Value = "Object 1" 
 args3(1).Name = "Range" 
 msgbox "l" & i & "l"
 temp = "$Tabelle2.$A$1:$A$" & i+1 & " ;$Tabelle2.$B$1:$B$" & i+1 
 args3(1).Value = temp 
 args3(2).Name = "ColHeaders" 
 args3(2).Value = true 
 args3(3).Name = "RowHeaders" 
 args3(3).Value = true 

 dispatcher.executeDispatch(document, ".uno:ChangeChartData", "", 0, args3())
gibt er mir "l19l" aus die l's hab ich reingemacht um zu gcuken ob danach noch zeichen kommen. Also i=19 wenn ich aber dann den datenbereich des Diagramms anschau dann steht da immer noch:
$Tabelle2.$A$1:$A$17;$Tabelle2.$D$1:$D$17
Wie kann ich denn den namen eines Objekt prüfen?
Genuin
Beiträge: 4
Registriert: So, 27.06.2004 02:43

Beitrag von Genuin »

hmm also die Obkecte hießen anders, aber auch damit gehts nicht :( Langsam mag ich OO nicht mehr :S :D. Kannst du mir mal ein bsp an T2B01@lycos.de schicken?
Antworten