Seite 2 von 2
Re: in geöffneter Tabelle das Blatt wechseln wie?
Verfasst: Fr 16. Sep 2022, 23:44
von wega
Hallo wanderer,
ich versuche einmal Deine Fragen zu beantworten.
a) sicher, wenn alle Stricke reißen wird man sich wieder an das Flußdiagramm
erinnern. Das liegt mir auch noch vor.
b) Sicher kann Libreoffice BASIC auch GOTO-Anweisungen. Nur mit "goto Labelxxx"
und "Labelxxx:" wird so ein Programm nicht übersichtlicher.
c) das Libreoffice BASIC mit CALC-Tabellen eventuell ein Problem hat, istmir vorher
auch nie so aufgefallen.
d) Ich habe mir mit dem Writer eine Bildschirmseite geschaffen, auf der ich die verschiedensten
Programme aufgelistet und mit einem Auswahlbutton versehen habe.
Mit diesen Button rufe ich dann das gewünschte Programm auf, über dessen Dialog ich dann
die benötigten Programmparameter eingebe. Die Ergebnisse der Berechnug(en) gebe ich dann
wenn nicht über "msgbox" dann über eine CALC-DAtei aus, wobei mir dann auch wenn nötig
bzw erforderlich auch ein Diagramm zu den Berechnungen ausgegeben wird.
Also, mein Programm kommt nicht aus der CALC-Datei sondern steuert eine CALC-Datei.
Und bei dieser Vorgehensweise ist mir die Ungereimtheit (oder meine Unkenntnis) mit der
CALC-Datei aufgefallen.
Ich hoffe, ich habe es verständlich erklärt.
Mit Gruß
Werner
Re: in geöffneter Tabelle das Blatt wechseln wie?
Verfasst: Sa 17. Sep 2022, 16:33
von Wanderer
Unter den Umständen würde ich rrstmal sicherstellen, dass ich das richtige Dokument befrage. Es könnte z.B sein, dass Du die aufrufende Writerdatei nach einem weitern Sheet befragst.
An dieser Stelle empfiehlt meist einer der Foristen die Nutzung von MRI oder XRAY - in diesem Fall im Herauszufinden, wohin Dien Objekt zeigt und in welchem Dokument Du dich gerade bewegst....
J.
Re: in geöffneter Tabelle das Blatt wechseln wie?
Verfasst: Sa 17. Sep 2022, 18:09
von F3K Total
Hallo Werner,
wega hat geschrieben: ↑Fr 16. Sep 2022, 23:44
c) das Libreoffice BASIC mit CALC-Tabellen eventuell ein Problem hat, istmir vorher
auch nie so aufgefallen
Dies kann ich in keiner Weise bestätigen, man kann ein Calc Dokument hervorragend mit Basic bearbeiten!
Deine Frage zu verstehen, ist schwierig, was meinst du mit
in geöffneter Tabelle das Blatt wechseln wie?
Wenn ich dich richtig verstanden habe, möchtest du schlicht auf Tabellenblatt 1 etwas auslesen und in Tabellenblatt 2 eintragen.
Das ist einfach, hier ein Beispielcode:
Code: Alles auswählen
Sub Copy_Value
oTabellen = ThisComponent.Sheets
oQuelltabelle = oTabellen.getbyindex(0)' oder oQuelltabelle = oTabellen(0) oder oTabellen.getbyName("Tabelle1") wenn deine erste Tabelle "Tabelle1" heißt
oZieltabelle = oTabellen.getbyindex(1)' oder oQuelltabelle = oTabellen(1) oder oTabellen.getbyName("Ausgabe")wenn deine zweite Tabelle "Ausgabe" heißt
oQuellzelle = oQuelltabelle.getcellbyposition(0,1) 'oder oQuelltabelle.getcellRangebyName("A2")
oZielzelle = oZieltabelle.getcellbyposition(0,1) 'oder oZieltabelle.getcellRangebyName("A2")
dValue = oQuellzelle.Value ' wenn die Zelle eine Zahl enthält
msgbox "Der Wert in Zelle A2 ist: " & dValue
'sText = oQuellzelle.String ' wenn die Zelle einen Text enthält
'sFormula = oQuellzelle.Formula ' wenn die Zelle eine Formel enthält, liest man sie auf diese Weise aus
oZielzelle.Value = dValue
'oZielzelle.String = sText
msgbox "Wert auf Tabelle Ausgabe in Zelle A2 eingetragen"
End Sub
Wenn du dabei das jeweilige Tabellenblatt sehen möchtest, kannst du dies mit dem CurrentController steuern.
Ein zweiter Beispielcode:
Code: Alles auswählen
Sub Copy_Value2
oController = ThisComponent.CurrentController ' hiermit kann man die Ansichten steuern, dies hat nichts mit dem Zugriff auf die Zellen zu tun
oTabellen = ThisComponent.Sheets
oQuelltabelle = oTabellen.getbyindex(0)' oder oQuelltabelle = oTabellen(0) oder oTabellen.getbyName("Tabelle1")
oZieltabelle = oTabellen.getbyindex(1)' oder oQuelltabelle = oTabellen(1) oder oTabellen.getbyName("Ausgabe")
'auf Tabelle Ausgabe springen
oController.activeSheet = oZieltabelle
msgbox "Aktuelle aktiv : Tabelle Ausgabe, siehe Reiter unten"
'auf Tabelle1 wechseln
oController.activeSheet = oQuelltabelle
msgbox "Auf Tabelle 1 gesprungen, siehe Reiter unten"
oQuellzelle = oQuelltabelle.getcellbyposition(0,1) 'oder oQuelltabelle.getcellRangebyName("A2")
oZielzelle = oZieltabelle.getcellbyposition(0,1) 'oder oZieltabelle.getcellRangebyName("A2")
dValue = oQuellzelle.Value ' wenn die Zelle eine Zahl enthält
msgbox "Der Wert in Zelle A2 ist: " & dValue
'sText = oQuellzelle.String ' wenn die Zelle einen Text enthält
'sFormula = oQuellzelle.Formula ' wenn die Zelle eine Formel enthält liest man sie auf diese Weise aus
'wieder auf Tabelle Ausgabe springen
oController.activeSheet = oZieltabelle
msgbox "Auf Tabelle Ausgabe gesprungen"
'Zielzelle für 1 Sekunde rot färben
oZielzelle.CellBackColor =RGB(255,0,0)
wait 1000
oZielzelle.CellBackColor = -1
oZielzelle.Value = dValue
'oZielzelle.String = sText
msgbox "Wert eingetragen"
End Sub
Diese beiden Codes funktionieren dann, wenn du eine Calc Datei mit mindestens zwei Tabellenblättern hast.
Gruß R
Re: in geöffneter Tabelle das Blatt wechseln wie?
Verfasst: Di 20. Sep 2022, 12:42
von wega
Hallo R,
vielen Dank für Deine Mühen.
Ja, genau das war es, -> Aus einem Tabellenblatt auslesen, rechnen lassen
und das Ergebnis in ein Folgeblatt hineinschreiben.
Deine Code-Sequenzen helfen mir sehr, mich in die Makro-Programmierung
einzuarbeiten.
Nochmals vielen Dank.
Mit Gruß
Werner
Re: [gelöst] in geöffneter Tabelle das Blatt wechseln wie?
Verfasst: Di 20. Sep 2022, 15:56
von F3K Total
Moin,
wie Wanderer bereits oben geschrieben hat:
Wanderer hat geschrieben: ↑Sa 17. Sep 2022, 16:33
An dieser Stelle empfiehlt meist einer der Foristen die Nutzung von
MRI oder
XRAY - in diesem Fall im Herauszufinden, wohin Dein Objekt zeigt und in welchem Dokument Du dich gerade bewegst....
Eines der beiden zu nutzen empfehle auch ich dir.
Gruß R