Frage von beney, 71

Visual Basic Intenger erhöhen?

Hier ist mein Code:

Dim Weiter As Integer

 If CheckBox1.Checked = False Then 

Weiter += 1

 ElseIf CheckBox2.Checked = False Then

Weiter += 1

 ElseIf CheckBox3.Checked = False Then 

Weiter += 1 

End If 

If Weiter = 3 Then

 MsgBox("Du hast was vergessen.") 

Else

 Form3.Show() 

End If

Das Programm soll im Prinzip nur testen, ob mindestens eine Checkbox geklickt wurde. Funktioniert aber nicht ganz so wie gewollt. Kann mir einer helfen?

Antwort
von offeltoffel, 27

Dein Code prüft in der ersten Zeile, ob die CheckBox1 aktiviert ist. Falls nein, dann erhöht sie "Weiter" um 1. Danach ist aber die Bedingung abgehandelt und er springt sofort zum Ende des If-Statements (EndIf). somit wird deine Variable "Weiter" immer nur 0 oder 1 annehmen können. Sobald er nen Treffer hat, beendet er.

Es heißt ja schließlich "ElseIf" also "ansonsten, wenn..."

Tipp fürs Debuggen:

Ersetze das mit "Else...Form3.show" durch ein einfaches

MsgBox(Weiter)

Dann weißt du immer, welchen Wert "Weiter" am Ende erhalten hat. Wenn es klappt, stellst du es wieder um.

Kommentar von beney ,

Dir auch vielen Dank. Jetzt kann ich es nachvollziehen :)

Antwort
von offeltoffel, 32

habe das += 1 in Python kennen gelernt. Komme ursprünglich aus dem VB-Lager und da war ich X = X + 1 gewöhnt. Fand es aber super praktisch und frage mich, warum man das bei VB nicht übernehmen kann ;D

Kommentar von TanteHolger ,

Den gibt es auch in Visual Basic ;)
https://msdn.microsoft.com/de-de/library/s7s8d7f4.aspx

Kommentar von offeltoffel ,

kraaahs...seit wann ist das so? Habe vor 10 Jahren zuletzte was mit VB gemacht, gabs das damals auch schon?

Kommentar von offeltoffel ,

Habs gerade probiert...bei VBA funktioniert es nicht. Wahrscheinlich dann nur im Visual Studio. Ist aber auch seltsam, oder?

Kommentar von TanteHolger ,

Irgendwie schon komisch jup.
Ich persönlich hasse VB, ich nutze C# als Alternative =)

Kommentar von PWolff ,

Dafür funktioniert die automatische Formatierung, Syntaxüberprüfung etc. bei VB sehr viel schneller und zuverlässiger als bei C#. Auch etwas, das zu verstehen ich mich weigere.

Kommentar von PWolff ,

Erst seit VB.NET.

VBA beruht noch auf dem eigentlich völlig veralteten VB6.

wert++ funktioniert in VB aber immer noch nicht, und ich habe überhaupt kein Verständnis dafür, wieso nicht.

Kommentar von offeltoffel ,

Deswegen fühle ich mich in VBA so wohl...habe nach VB6 aufgehört, mich dafür zu interessieren ;D auch wenn es natürlich sinnvoll wäre, aber da kamen eben andere Programmiersprachen hoch, die für mich wichtiger waren.

Antwort
von Dominic121219, 22

Gehen würde auch: if CheckBox1.checked = true then form3.show. Und das für jede checkbox. Ist zwar nicht schön aber es funzt.

Kommentar von Dominic121219 ,

Oder doch nicht kleiner fehler von mir.

Antwort
von ymicky, 19

Gibt es einen bestimmten Sinn, dass du einen Integer inkrementierst?
Sollte doch auch so gehen:

If (Checkbox1.Checked = False) And (Checkbox2.Checked = False) And (Checkbox3.Checked = False) Then
MsgBox("Du hast was vergessen.")
Else
Form3.Show()
End If

Kannst dir auch ein bisschen Code folgendermaßen sparen:



If (Checkbox1.Checked) Or (Checkbox2.Checked) Or(Checkbox3.Checked) Then
Form3.Show()
Else

MsgBox("Du hast etwas vergessen.")
End If



Kommentar von beney ,

Oh danke.

Hatte das mit dem "And" völlig verdrängt. 

Funktioniert bestens. :)

Antwort
von TanteHolger, 37

Erhöhen kanst Du Weiter indem Du 1 zu Weiter zuaddierst.

Weiter = Weiter + 1
Kommentar von beney ,

Habe ich schon korrigiert. Funktioniert trotzdem nicht.

Vielen Dank aber schon mal für deine Antwort. :)

Antwort
von TanteHolger, 10

Hier mal was fertiges.

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim Weiter As Integer
Weiter = 0
If CheckBox1.Checked Then
Weiter = Weiter + 1
End If
If CheckBox2.Checked Then
Weiter = Weiter + 1
End If
If CheckBox3.Checked Then
Weiter = Weiter + 1
End If
If Weiter > 0 Then
Form2.Show()
End If
End Sub

Die Funktion wird Dir nicht viel bringen, da man die Checkboxen auch wieder unchecken kann, also muss da auch ein Event her ;)

Antwort
von Dominic121219, 30

Weiter as Integer = 0

Sonst hast du ein NULL Pointer exception weil der Integer = NULL ist also keinen Wert hat. Und was sollte nichts + 1 schon geben?

Kommentar von beney ,

Okay danke:)

Funzt leider immer noch nicht.

Kommentar von Dominic121219 ,

Ach und weiter = weiter + 1

Kommentar von ymicky ,

Was funktioniert denn nicht? 

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten