🙏 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!🍀

❤️ DANKE >> << DANKE ❤️

>> 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) Bekomme Fehler bei IF und Esle

Alles zur Programmierung im LibreOffice.
mikele
* LO-Experte *
Beiträge: 1932
Registriert: Mo 1. Aug 2011, 20:51

Re: Bekomme Fehler bei IF und Esle

Beitrag von mikele » Mi 26. Okt 2016, 17:39

Hallo,

Code: Alles auswählen

Sheet=Sheets.getByName("Dashboard")
Gruß,
mikele

Atwist
Beiträge: 82
Registriert: Mo 14. Sep 2015, 18:46

Re: Bekomme Fehler bei IF und Esle

Beitrag von Atwist » Mi 26. Okt 2016, 19:06

Wenn ich

Code: Alles auswählen

   Sheets.getByName("Dashboard")
Ändere in

Code: Alles auswählen

   Sheet=Sheets.getByName("Dashboard")
bekomme ich jetzt diesen Fehler.
error-1.png
error-1.png (59.47 KiB) 2361 mal betrachtet
Und die Meldung bekomme ich auch wenn ich es mit die Schaltfläche mache.
Schöne grüße aus Emsland

Andreas

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Bekomme Fehler bei IF und Esle

Beitrag von craig » Mi 26. Okt 2016, 19:39

Hallo,

es wird in dieser Zeile nicht der Name erwartet, den Du vergeben hast,
sondern der Name der von LO bei Erstellung des Buttons standarmäßig
vergeben wird.
Im Deutschen lautet dieser "Schaltfläche 1". Niederländisch?

Code: Alles auswählen

Button=oSheet.getDrawPage().Forms.getByIndex(0).getByName("Schaltfläche 1")
Ich habe dies gerade mit MRI ausgetestet.
Testzeile:

Code: Alles auswählen

mri Sheet.DrawPage.Forms.getByIndex(0)
Gruß

Craig
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Bekomme Fehler bei IF und Esle

Beitrag von balu » Mi 26. Okt 2016, 21:47

Hallo Andreas,

die gezeigte Fehlermeldung besagt, das es KEIN Element mit dem Namen ShowSchulden gibt.
Das heißt, das Du vielleicht den Button anders beschriftest hast, als wie in der Makro Abfrage.

Auch wenn Du selber lesen kannst: ShowSchulden, so ist das Makro sehr sehr sehr sehr empfindlich gegüber voran- und nachgestellte Leerzeichen.
Wenn also die Beschriftung des Buttons so aussieht

Code: Alles auswählen

 ShowSchulden
Und Du in der Makroabfrage nach

Code: Alles auswählen

ShowSchulden
suchst, so sind die die beiden Wörter NICHT identisch, da in der Beschriftung vor dem Namen sich ein Leerzeichen eingeschlichen hat. Und folglich ist " ShowSchulden" nicht das gleiche wie "ShowSchulden".

Also bitte überprüfe die Beschriftung des Buttons.

Und jetzt noch ne kleinigkeit zu deinem Makro-Code.

Machs dir ein wenig Komfortabler, und löse dich von diesem ewigen "Sheet .....", und nimm ruhig eine Schreibweise die für dich verständlicher ist.
Also Sheet heißt ja in deutsch: Blatt
Und in holländisch wäre das wohl: Blad
Also kombinierst Du den Blattnamen mit der Bezeichnung Blad, entweder vor dem Blattnamen oder dahinter, und schon hast Du für dich eine bessere Übersicht geschaffen, die DU besser lesen und verstehen kannst. Und das könnte dann wie folgt so aussehen.

Code: Alles auswählen

Sub WeerGraveSchulden
    Dim oBlad_Dashboard As Object, oBlad_Schulden As Object
    Dim oButton As Object
    
    oDoc = ThisComponent
    oBlad_Dashboard = oDoc.sheets.getByName("Dashboard")
    oBlad_Schulden = oDoc.sheets.getByName("Schulden")
    
    oButton = oBlad_Dashboard.DrawPage.Forms.getByIndex(0).getByName("ShowSchulden")
    
    IF Button.State = 1 THEN
         oBlad_Schulden.visible = True
      ELSE
         oBlad_Schulden.visible = False
      END IF
End Sub
Oder aber auch so.

Code: Alles auswählen

'
'
' Hier eine andere Bezeichnung für die Blätter.
'
Sub WeerGraveSchulden
    Dim oDashboard_Blad as Object, oSchulden_Blad As Object 
    Dim oButton As Object
    
    oDoc = ThisComponent
    oDashboard_Blad = oDoc.sheets.getByName("Dashboard")
    oSchulden_Blad = oDoc.sheets.getByName("Schulden") 
    
    oButton = oDashboard_Blad.DrawPage.Forms.getByIndex(0).getByName("ShowSchulden")
    
    IF Button.State = 1 THEN
         oSchulden_Blad.visible = True
      ELSE
         oSchulden_Blad.visible = False
      END IF
End Sub
So ähnlich hattes ja auch schon Karolus heute nachmittag gezeigt. Ich persönlich setze aber noch ganz gerne ein kleines o voran, damit ich weiß das es sich um ein Object handelt, und nicht z.B. ein String ist. Das ist wohl alles kein muss, aber im Laufe der Zeit, wenn ein Makro immer größer wird, sind das manchmal kleine aber nützliche Helferlein ;)



Gruß
Balu

Atwist
Beiträge: 82
Registriert: Mo 14. Sep 2015, 18:46

Re: Bekomme Fehler bei IF und Esle

Beitrag von Atwist » Do 27. Okt 2016, 08:42

Ja wohl es geht doch habe die Fehler gefunden "visible" muss "IsVisible" sein

Code: Alles auswählen

Sub WeerGaveSchulden
    Dim oDashboard_Blad as Object, oSchulden_Blad As Object 
    Dim oButton As Object
    oDoc = ThisComponent
    oDashboard_Blad = oDoc.sheets.getByName("Dashboard")
    oSchulden_Blad = oDoc.sheets.getByName("Schulden") 
    
    oButton=oDashboard_Blad.getDrawPage().Forms.getByIndex(0).getByName("Schulden1")
    
    IF oButton.State = 1 THEN
         oSchulden_Blad.IsVisible = True
    ELSE
         oSchulden_Blad.IsVisible = False
    END IF
End Sub
Bei Zufall hab ich die Fehler gefunden da ich die Makro von Karolus nochmal durch gelaufen bin fand ich die "IsVisible" und das in die ober stehende Makro geändert und es lauft
Karolus Makro

Code: Alles auswählen

Sub tooglesheet(event)
    button = event.Source.Model
    doc = button.Parent.Parent.Parent
    schulden = doc.Sheets.getByName("Schulden")
    schulden.IsVisible = IIF(button.State, True, False)
End Sub
@Craig
"Schaltfläche 1". Niederländisch?

Ist "Knop 1" ;)

@Balu
So ähnlich hattes ja auch schon Karolus heute nachmittag gezeigt. Ich persönlich setze aber noch ganz gerne ein kleines o voran, damit ich weiß das es sich um ein Object handelt, und nicht z.B. ein String ist. Das ist wohl alles kein muss, aber im Laufe der Zeit, wenn ein Makro immer größer wird, sind das manchmal kleine aber nützliche Helferlein ;)
Ich Probiere mir dass an zu Lehrern, glaube schon das es übersichtlicher ist.

@Craig, Karolus, mikele und Balu.
Ich danke euch für eure Geduld, Lösungen und Ratschläge DANKE
Schöne grüße aus Emsland

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.



Antworten