Seite 1 von 2

(Gelöst) Bekomme Fehler bei IF und Esle

Verfasst: Mi 26. Okt 2016, 13:51
von Atwist
Ich bekomme einen Fehler "BASIC-syntaxiserror ELSE/Endif without if" aber ich benutze doch eine "if" bin ich jetzt blöd oder Lo :shock:

Code: Alles auswählen

Sub WeerGaveSchulden
   Dim Button As Object
   Doc = ThisComponent
   Sheets = Doc.Sheets()
   Sheets.getByName("Dashboard")
   with 
   Sheet.DrawPage.Forms.getByIndex(0).getByName("ShowSchulden")
   If .State = 1 then Sheet.getByName("Schulden").visible = True
   Else
   Sheet.getByName("Schulden").visible = False
   Endif
   end with
End sub

Re: Bekomme Fehler bei IF und Esle

Verfasst: Mi 26. Okt 2016, 15:12
von craig
Hallo,

dieser Fehler wird immer wieder gemacht!

EINZEILIGES WENN/DANN
Hier wird kein END IF benötigt.
If a=b then x=100

MEHRZEILIGES WENN/DANN bzw. WENN/DANN/SONST
IF .... THEN
Anweisung 1
Else
Anweisung 2
END IF

Daraus resultiert:

Code: Alles auswählen

SUB WeerGaveSchulden
DIM Button As Object
	Doc = ThisComponent
	Sheets = Doc.Sheets()
	Sheets.getByName("Dashboard")

   WITH Sheet.DrawPage.Forms.getByIndex(0).getByName("ShowSchulden")

		IF .State = 1 THEN
			Sheet.getByName("Schulden").visible = True
		ELSE
			Sheet.getByName("Schulden").visible = False
		END IF

	END WITH
END SUB
Ausserdem:
  • WITH "mit WAS?"
    Muss einzeilig geschrieben sein!
  • Schreibfehler Endif --> END IF
Ich weiß, viele schreiben den Code "quick'n dirty". Aber gerade wenn man sich nicht perfekt auskennt,
ist es sehr hilfreich den Code sauber einzurücken. Siehe mein Beispiel im Codeblock.
Man behält besser den Überblick und erleichtert die Fehlersuche ungemein.

Gruß

Craig

Re: Bekomme Fehler bei IF und Esle

Verfasst: Mi 26. Okt 2016, 15:41
von karolus
Hallo

@Craig: Und warum `dim`st du Button wenn das Ding im weiteren eh nicht benutzt wird.
Und was ist mit `sheet` wo kommt das dann her?

Unter der Annahme das der Button auf den der Benutzer klickt identisch ist mit dem Button dessen `State` hier abgefragt wird:

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

Karolus

Re: Bekomme Fehler bei IF und Esle

Verfasst: Mi 26. Okt 2016, 15:56
von craig
Hallo Karolus,
@Craig: Und warum `dim`st du Button wenn das Ding im weiteren eh nicht benutzt wird.
Ich habe lediglich die offensichtlichen Fehler bezüglich der IF-Anweisung aus
dem Code entfernt und den Rest 1:1 übernommen, da dies nicht Bestandteil der Frage ist.

Mit Deiner professionellen und intelligenten Art zu programmieren kann ich eh nicht mithalten.
Ich freue mich immer wenn ich etwas von Dir lernen kann. Danke!

Gruß

Craig

Re: Bekomme Fehler bei IF und Esle

Verfasst: Mi 26. Okt 2016, 16:47
von Atwist
Leider muss ich mitteilen dass beide Lösungen nicht bei mir Funktionieren.

@Craig bei deine Lösung bekomme ich eine "Basic-Runtime-Error Objectvariable nicht eingestellt"

@Korolus bei deine Lösung bekomme ich eine "Basic-Runtime-Error Das Argument ist nicht optional"

Re: Bekomme Fehler bei IF und Esle

Verfasst: Mi 26. Okt 2016, 16:54
von craig
Hallo,
@Craig bei deine Lösung bekomme ich eine "Basic-Runtime-Error Objectvariable nicht eingestellt"
In welcher Zeile wird der Fehler angezeigt?

In der angezeigten Zeile, steht ggf. ein Name für z.B. ein Sheet, dass nicht existiert oder anders geschrieben wird.
Kann auch der Button-Name sein auf den Du verweist,

Gruß

Craig

Re: Bekomme Fehler bei IF und Esle

Verfasst: Mi 26. Okt 2016, 16:57
von Atwist
IF .State = 1 THEN

Re: Bekomme Fehler bei IF und Esle

Verfasst: Mi 26. Okt 2016, 17:10
von craig
Hallo,

und so:

Code: Alles auswählen

SUB WeerGaveSchulden
DIM Button As Object
   Doc = ThisComponent
   Sheets = Doc.Sheets()
   Sheets.getByName("Dashboard")

   Button=Sheet.DrawPage.Forms.getByIndex(0).getByName("ShowSchulden")

      IF Button.State = 1 THEN
         Sheet.getByName("Schulden").visible = True
      ELSE
         Sheet.getByName("Schulden").visible = False
      END IF

END SUB
Gruß

Craig

Re: Bekomme Fehler bei IF und Esle

Verfasst: Mi 26. Okt 2016, 17:31
von Atwist
Leider Nein.
Error.png
Error.png (52.7 KiB) 4021 mal betrachtet

Re: Bekomme Fehler bei IF und Esle

Verfasst: Mi 26. Okt 2016, 17:36
von karolus
Atwist hat geschrieben: @Korolus bei deine Lösung bekomme ich eine "Basic-Runtime-Error Das Argument ist nicht optional"
Natürlich bekommst du den Fehler, du darfst das so nicht aus der Basic-IDE aufrufen, du musst das schon mit einem Ereignis der Schaltfläche verknüpft, aufrufen.

@craig: solange da nirgends ein `Sheet` definiert wird kann das nicht laufen.