🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
(Gelöst) Wieder mal blöd
(Gelöst) Wieder mal blöd
Habe gestern schon mal eine blöde Frage gestellt http://www.libreoffice-forum.de/viewtop ... =6&t=16748
Und muss heute dass wieder machen ich krieg es einfach nicht hin ich denk zufiel in die VBA Sprache was mir Gans gut ab ging.
Aber wie kann ich einen Button ein und aus schalten (enable and disable) hab es versucht über die Makro Aufnahme.
Was ich will ist dass wenn ich auf der Button drucke und die Makro ist Ausgeführt dann muss der Button Ausgeschaltet (disable) werden.
Gerne einen Tipp habe schon die Tool MRI aber da komm ich noch nicht mit klar.
Und muss heute dass wieder machen ich krieg es einfach nicht hin ich denk zufiel in die VBA Sprache was mir Gans gut ab ging.
Aber wie kann ich einen Button ein und aus schalten (enable and disable) hab es versucht über die Makro Aufnahme.
Was ich will ist dass wenn ich auf der Button drucke und die Makro ist Ausgeführt dann muss der Button Ausgeschaltet (disable) werden.
Gerne einen Tipp habe schon die Tool MRI aber da komm ich noch nicht mit klar.
Zuletzt geändert von Atwist am Mi 26. Okt 2016, 13:43, insgesamt 1-mal geändert.
Schöne grüße aus Emsland
Andreas
Andreas
Re: Wieder mal blöd
Hallo,
ich freue mich, dass Du meinem Rat gefolgt bist und unter der richtigen Rubrik postest.
Nun wäre es für alle Suchenden und Helfenden von großem Nutzen, wenn Du noch
einen passenden Titel wählen würdest:
statt
Wieder mal blöd
z.B.
Makro Calc Button ein- und ausschalten
Wenn jetzt jemand googelt findet er diesen Beitrag und der Person wurde auch damit geholfen.
OK
Nun habe ich zu Deiner Frage, noch Fragen:
Craig
ich freue mich, dass Du meinem Rat gefolgt bist und unter der richtigen Rubrik postest.
Nun wäre es für alle Suchenden und Helfenden von großem Nutzen, wenn Du noch
einen passenden Titel wählen würdest:
statt
Wieder mal blöd
z.B.
Makro Calc Button ein- und ausschalten
Wenn jetzt jemand googelt findet er diesen Beitrag und der Person wurde auch damit geholfen.
OK

Nun habe ich zu Deiner Frage, noch Fragen:
- Befindet sich der Button auf einem Dialog oder in einem Dokument?
- Wenn in einem Dokument in welchem: CALC oder WRITER oder usw.?
Craig
Gruß
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Re: Wieder mal blöd
Hallo Atwist,
Du hast in dem anderen von dir verlinkten Beitrag folgendes gesagt.
VBA
Cells(I,2)
VBA
Range("A2")
StarBasic
getCellByPosition(I,2)
StarBasic
getCellRangeByName("A2")
So, und nun zu deinem Problem.
Das kannst Du auf jeden fall in LO knicken. Denn Aktionen oder Änderungen auf einem Grafischen Element kriegst Du nicht per Makro-Recorder aufgezeichnet. Denn der Rekorder zeichnet ja schon unter normalen Umständen nicht alles auf. Also bleibt dir nix anderes übrig als dich richtig mit der Programmierung in StarBasic auseinander zu setzen.
Und ich würde dir dringend raten eine Beispieldatei hier anzuhängen, da ansonsten es mit Hilfe unserseits sehr schwer wird.
Gruß
balu
Du hast in dem anderen von dir verlinkten Beitrag folgendes gesagt.
Und jetzt sagst Du.Habe meinen Fehler entdeckt, ich habe jedes mal A1, B9, B10 und B11 als Zelle Verweisung benutzt statt 0,0 , 1,9 usw.
Das war Blöd von mir (denk noch zu viel in VBA).
Und irgendwie kann ich mir nicht so wirklich vorstellen das Du richtig in VBA programmiert hast. Denn dann wüsstest Du, das man auch in VBA-Excel mindestens 2 möglichkeiten hat eine Zelle anzusprechen, die der möglichkeiten von StarBasic sehr ähnlich sind.ich denk zufiel in die VBA Sprache was mir Gans gut ab ging.
VBA
Cells(I,2)
VBA
Range("A2")
StarBasic
getCellByPosition(I,2)
StarBasic
getCellRangeByName("A2")
So, und nun zu deinem Problem.
War das deine bevorzugte Methode in VBA?hab es versucht über die Makro Aufnahme
Das kannst Du auf jeden fall in LO knicken. Denn Aktionen oder Änderungen auf einem Grafischen Element kriegst Du nicht per Makro-Recorder aufgezeichnet. Denn der Rekorder zeichnet ja schon unter normalen Umständen nicht alles auf. Also bleibt dir nix anderes übrig als dich richtig mit der Programmierung in StarBasic auseinander zu setzen.
Also er soll deaktiviert werden, aber NICHT unsichtbar geschaltet werden? Ich frage das nur zur Sicherheit nach.Was ich will ist dass wenn ich auf der Button drucke und die Makro ist Ausgeführt dann muss der Button Ausgeschaltet (disable) werden.
Was craig mit Dialog sagen will (ich weiß es ja, da ich selber damit arbeite), wäre in Excel-VBA gleichzusetzen mit einem "UserInterface" (UI).craig hat geschrieben: Nun habe ich zu Deiner Frage, noch Fragen:
- Befindet sich der Button auf einem Dialog oder in einem Dokument?
- Wenn in einem Dokument in welchem: CALC oder WRITER oder usw.?
Und ich würde dir dringend raten eine Beispieldatei hier anzuhängen, da ansonsten es mit Hilfe unserseits sehr schwer wird.
Gruß
balu
Re: Wieder mal blöd
Hallo Atwist,balu hat geschrieben:Denn der Rekorder zeichnet ja schon unter normalen Umständen nicht alles auf.
in der Programmhilfe kannst du, wenn du möchtest, nachlesen,
welche Einschränkungen es beim Makrorekorder gibt.
F1 –> "Makros aufzeichnen"
Re: Wieder mal blöd
Code: Alles auswählen
sub Deaktiviert_das_KE(oEvent)
...
oEvent.source.model.Enabled = false
...
end sub
Dem Ereignis "Aktion ausführen" Dein Makro zuweisen.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
Re: Wieder mal blöd
Hallo alle,
Ich bemühe um die Lo Basic Sprache hin zu bekommen und einen Makro aufnehmen kann ich auch aber dass sind ja 10 Zeilen Basic statt 2 oder 3 mit VBA.
Bei meine Problem hab ich jedes mal etwas dass Kommando "commandButton_1" benutzt um meine Button 1 aus zu schalten. muss "oEvent.source.model" sein.
Aber was ich nicht verstehe ist wie bekomme ich die unterschied zwischen 2 Buttons.
In VBA ist es um die Buttons wieder Ein zu schalten.
Und jetzt hab ich kein unterschied wenn ich wieder "oEvent.source.model" benutze.
Ich bemühe um die Lo Basic Sprache hin zu bekommen und einen Makro aufnehmen kann ich auch aber dass sind ja 10 Zeilen Basic statt 2 oder 3 mit VBA.
Bei meine Problem hab ich jedes mal etwas dass Kommando "commandButton_1" benutzt um meine Button 1 aus zu schalten. muss "oEvent.source.model" sein.
Aber was ich nicht verstehe ist wie bekomme ich die unterschied zwischen 2 Buttons.
In VBA ist es um die Buttons wieder Ein zu schalten.
Code: Alles auswählen
Sub CommandButton_3 Click()
CommandButton_1.Enable = True
CommandButton_2.Enable = True
End Sub
Schöne grüße aus Emsland
Andreas
Andreas
Re: Wieder mal blöd
evtl. so:
oEvent.source.model ... ist das Model des Buttons
oEvent.Source.model.parent ... ist das "Formular-(Objekt)" in dem sich der Button und in der Regel auch alle anderen Buttons... (^=Kontrollelemente) befinden. Die Kontrollelemente des Formulars bekommt man (u.a.) mit der Methode .GetByName("NameDesKEs").
(In der Regel hat man nur 1 Formular-Objekt, außer man legt per Hand ein weiteres an.)
Du kannst auch den Status abfragen:
übersichtlicher:
Code: Alles auswählen
Sub CommandButton_3 Click(oEvent)
oEvent.Source.model.parent.getbyname("CommandButton_1").Enabled = True
oEvent.Source.model.parent.getbyname("CommandButton_2").Enabled = True
End Sub
oEvent.Source.model.parent ... ist das "Formular-(Objekt)" in dem sich der Button und in der Regel auch alle anderen Buttons... (^=Kontrollelemente) befinden. Die Kontrollelemente des Formulars bekommt man (u.a.) mit der Methode .GetByName("NameDesKEs").
(In der Regel hat man nur 1 Formular-Objekt, außer man legt per Hand ein weiteres an.)
Du kannst auch den Status abfragen:
Code: Alles auswählen
Sub CommandButton_3 Click(oEvent)
if oEvent.Source.model.parent.getbyname("CommandButton_1").Enabled then
oEvent.Source.model.parent.getbyname("CommandButton_1").Enabled = false
oEvent.Source.model.parent.getbyname("CommandButton_2").Enabled = false
else
oEvent.Source.model.parent.getbyname("CommandButton_1").Enabled = true
oEvent.Source.model.parent.getbyname("CommandButton_2").Enabled = true
end if
End Sub
Code: Alles auswählen
Sub CommandButton_3 Click(oEvent)
with oEvent.Source.model.parent
if .getbyname("CommandButton_1").Enabled then
.getbyname("CommandButton_1").Enabled = false
.getbyname("CommandButton_2").Enabled = false
else
.getbyname("CommandButton_1").Enabled = true
.getbyname("CommandButton_2").Enabled = true
end if
end with
End Sub
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
Re: Wieder mal blöd
Danke gogo,
Mit diesen Beispiel ist es leichter die LO Basic zu verstehen.
Ich werde diesen mal in meins einbauen.
Mit diesen Beispiel ist es leichter die LO Basic zu verstehen.
Ich werde diesen mal in meins einbauen.
Wenn ich es richtig verstehe dann muss ich auch immer mit die Formular Navigator Arbeiten und alles unter 1 Formular bauen.(In der Regel hat man nur 1 Formular-Objekt, außer man legt per Hand ein weiteres an.)
Schöne grüße aus Emsland
Andreas
Andreas
Re: Wieder mal blöd
es können beliebig viele Formular-Objekte sein die beliebig verschachtelt sind. So ein Formular-Objekt ist einfach nur eine Container in dem sich andere Objekte befinden. Darüber hinaus KANN ein Formular-Objekt auf Daten einer Tabelle hinweisen (muss es aber nicht!). Ein Formular-Objekt, dass in CALC oder im WRITER erstellt wird um dort in einem Tabellenblatt/Writer-Dokument einen Button anzuzeigen hat per se keine Datenherkunft. Falls du aber in BASE mit dem Formular-Assistent ein Formular erstellst wird das generierte Formular-Objekt aber die Daten einer Tabelle darstellen können.
Im Formular-Navigator kannst Du in Form einer Baumansicht alle Formular-Objekte sehen, und auch alle Kontrollelemente, die sich in den Formular-Objekten befinden. Die Namen die dort angezeigt werden kannst Du für die .GetByName() Methode verwenden (um im Baum hierarchisch nach unten zu gehen) das jeweils übergeordnete Objekt bekommt man mit der Methode .Parent()
Falls es 2 Formulare gibt kann man bei einem Klick auf "Button1" im Formular "F01" etwa so zum "Button2" im Formular "F02" kommen:
Mit dem Tools xRay oder MRI kannst Du sehr einfach Objekte zur Laufzeit erkunden.
(Nach der Installation einfach im Makro "mri(oEvent.Source)" oder "xray(oEvent.Source)" einfügen - das Makro wird an dieser Stelle unterbrochen und das Objekt angezeigt, mit all seinen Methoden und Eigenschaften...
Im Formular-Navigator kannst Du in Form einer Baumansicht alle Formular-Objekte sehen, und auch alle Kontrollelemente, die sich in den Formular-Objekten befinden. Die Namen die dort angezeigt werden kannst Du für die .GetByName() Methode verwenden (um im Baum hierarchisch nach unten zu gehen) das jeweils übergeordnete Objekt bekommt man mit der Methode .Parent()
Falls es 2 Formulare gibt kann man bei einem Klick auf "Button1" im Formular "F01" etwa so zum "Button2" im Formular "F02" kommen:
Code: Alles auswählen
...
oEvent.Source.Model.Parent.Parent.GetByName("F02").GetByName("Button2")
...
(Nach der Installation einfach im Makro "mri(oEvent.Source)" oder "xray(oEvent.Source)" einfügen - das Makro wird an dieser Stelle unterbrochen und das Objekt angezeigt, mit all seinen Methoden und Eigenschaften...
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
Re: Wieder mal blöd
Mit MRT versuch ich mich schon schlau zu machen, aber xRay konnte ich nicht so schnell finden.Mit dem Tools xRay oder MRI kannst Du sehr einfach Objekte zur Laufzeit erkunden.
Vielen dank für den Erklärung über die Formulare.
Die Beispielen haben mir sehr geholfen um LO Basic besser zu verstehen.
Schöne grüße aus Emsland
Andreas
Andreas
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.