Private/Public Subs - Variable nicht deklariert??? (Totaler Anfänger^^)

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Lockerzzz.

    Private/Public Subs - Variable nicht deklariert??? (Totaler Anfänger^^)

    Hey,

    ich hab mir heute Microsoft VIsual Basic 2010 runtergeladen, und mir im Internet, zb. auf microsoft usw. ein paar Turorials angeschaut.
    Ich hab mich früher schon mal mit Visual Basic beschäftigt, aber nur gaaaanz kurz.
    Hab sonst keinerlei Erfahrung auf dem Gebiet des Programmierens, und soweit ich gelesen hab, soll VB trotz begrenzter Möglichkeiten (oder gerade deshalb)
    eine gute Anfängersprache sein. Jetzt plagt mich die ganze Zeit dieses Problem...... Wenn ich bei einem Button eine Variable deklariere, und diese dann bei einem anderen Button brauche, dann sagt
    er dass die Variable nicht deklariert ist.....Hab auch schon statt Private Sub Public sub hingeschrieben, aber das ändert nix.....

    Übrigens, mein "Programm", and dem ich schreibe, ist eine Art einfacher Rechner, nur zur Übung und Festigung der Grundlagen^^

    Ich hoffe, mir kann das jemand erklären, wäre ganz nett :)

    Übrigens: Bitte Deusch reden und nicht VB-isch....^^

    Falls das wichtig ist: ich kann noch nichts, außer If´s (auch else, elseif) und Varieblen deklarieren)

    Ich hab mir das so gedacht, dass ich einfach ein Label mache, das in der gleiche Schriftfarbe wie der Hintergrund, und wenn dann der Button mit dem + geklickt wid, dass sich dann der Text des Labels auf + ändert und ich dann mit einem

    If Label1.Text = "+" Then
    TextBox1.Text = ErsteZahl + ZweiteZahl
    Elseif Laberl1.Text = "-" Then
    TextBox1.Text = ErsteZahl - ZweiteZahl......usw mit mal und dividiert (Wobei ErsteZahl und Zweitezahl die Variablennamen der beiden Zahlen sind)
    Dann das überprüfe, erscheint mir aber ein wenig unprofessionell^^

    Hier der Code(Und das Problem ganz unten, wo Button14 steht):

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. End Sub
    4. Public Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
    5. Dim Rechenzeichen As String = "+"
    6. Dim ErsteZahl As Double = TextBox1.Text
    7. TextBox1.Text = ""
    8. End Sub
    9. Public Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
    10. Dim Rechenzeichen As String = "-"
    11. Dim ErsteZahl As Double = TextBox1.Text
    12. TextBox1.Text = ""
    13. End Sub
    14. Public Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
    15. Dim Rechenzeichen As String = "*"
    16. Dim ErsteZahl As Double = TextBox1.Text
    17. TextBox1.Text = ""
    18. End Sub
    19. Public Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
    20. Dim Rechenzeichen As String = "/"
    21. Dim ErsteZahl As Double = TextBox1.Text
    22. TextBox1.Text = ""
    23. End Sub
    24. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    25. TextBox1.Text = TextBox1.Text & "1"
    26. End Sub
    27. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    28. TextBox1.Text = TextBox1.Text & "2"
    29. End Sub
    30. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    31. TextBox1.Text = TextBox1.Text & "3"
    32. End Sub
    33. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    34. TextBox1.Text = TextBox1.Text & "4"
    35. End Sub
    36. Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    37. TextBox1.Text = TextBox1.Text & "5"
    38. End Sub
    39. Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
    40. TextBox1.Text = TextBox1.Text & "6"
    41. End Sub
    42. Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
    43. TextBox1.Text = TextBox1.Text & "7"
    44. End Sub
    45. Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
    46. TextBox1.Text = TextBox1.Text & "8"
    47. End Sub
    48. Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
    49. TextBox1.Text = TextBox1.Text & "9"
    50. End Sub
    51. Public Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click
    52. Dim ZweiteZahl As Double = TextBox1.Text
    53. If Rechenzeichen = "+" Then
    54. TextBox1.Text = Erstezahl + ZweiteZahl
    55. End If
    56. End Sub
    57. End Class


    Naja, ich hofe ihr versteht mich ;)
    Danke schonmal

    Unwesen schrieb:

    1. Erstmal: Für den Code den VB-Tag benutzen. 2. Zu deiner Variable: Wenn du die in einer Sub deklarierst, ist die auch nur in dieser Sub gültig.
    So, hab ich gemacht :)

    Zu 2.: Das ist mir schon klar, aber wie lös ich das Problem? ^^

    Edit:

    Also: Deklariere die Variable auf Class-Ebene (unter "Public Class Form1").

    Hab ich schon versucht, aber das Problem ist, dass die erst deklariert werden soll, wenn der + Button geklickt wird. Wie mach ich das dann in der Class Ebene? Hab mich auch damit schon rumgeschlagen.^^

    Sorry wegen der dummen Fragen, aber da ich es selbst nicht finde muss ich wohl:
    "Tu dir selbst einen gefallen und schalte so früh wie möglich Option Strict auf On."
    Wie?^^

    Danke

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lockerzzz“ ()

    VB.NET-Quellcode

    1. 'GAAAANZ oben
    2. Option Strict On 'GAAAANZ wichtig
    3. Public Class frmMain
    4. Private Enum RechenOp
    5. Nichts
    6. Plus
    7. Minus
    8. Mal
    9. Geteilt
    10. End Enum
    11. Dim currentOp As RechenOp = RechenOp.Nichts
    12. 'Button:
    13. currentOp = RechenOp.Plus
    14. 'Berechnen
    15. Select Case currentOp
    16. Case RechenOp.Plus
    17. 'Addieren
    18. Case RechenOp.Minus
    19. 'Subtrahieren
    20. Case RechenOp.Mal
    21. 'Multiplizieren
    22. Case RechenOp.Geteilt
    23. 'Dividieren
    24. Case RechenOp.Nichts
    25. 'Nichts tun / Fehler - Es gibt nichts zu berechnen etc. pp.
    26. End Select
    27. End Class


    Nützliche Links

    Forumsintern:
    [Allgemein] Entwickler-Ressourcen und Tools, Bücher und WebCasts
    [Allgemein] Grundlagen: Benennung von Controls (Update: 24.10.2010)
    [VB.NET] Beispiele für guten und schlechten Code (Stil)

    Galileo Openbooks:
    Galileo Openbook VB.NET
    Galileo Openbook Einstieg in VB 2008
    Galileo Openbook Einstieg in VB 2010

    Unwesen schrieb:

    VB.NET-Quellcode

    1. dim MeineVariable as String 'Deklaration
    2. Private Sub Irgendwas ()
    3. MeineVariable = Textbox1.Text 'Wertzuweisung
    4. End Sub
    Das leuchtet ein! Und funktioniert natürlich^^

    Danke
    PS: @ FAtheone Danke auch dir, aber da ich erst heute wieder angefangen hab kann ich mit Begriffen wie zb. enum oder case nocht nichts anfangen, und wollte erst mal nur mein Problem gelößt haben

    Trotzdem Danke!

    mfg
    Die Links sollten Trotzdem weiterhelfen.

    Enums sind quasi "Status-Variablen-Typen", sie sind wesentlich effizienter und eleganter als Strings.
    Select Case ist eine "Lange If-Abfrage":

    VB.NET-Quellcode

    1. Select Case a
    2. case b
    3. case c
    4. case d
    5. case else
    6. end select


    ist äquvalent zu

    VB.NET-Quellcode

    1. If a=b Then
    2. ElseIf a =c Then
    3. ElseIf a = d Then
    4. Else
    5. End If