#1 2. Februar 2009 Brauche Hilfe bei vb textbox Hi Leute. Ich als blutigster Anfänger versuche mich mal an einem Bruchrechnerprogramm (ohne weiteres kürzen vorerst). Man gibt erst die 4 sachen ein, danach drückt man den Button und dann soll er in die Textbox 5 und 6 das jeweilige ergebnis anzeigen. Aber irgendwas läuft da schief. Bitte sagt mir was und erklärt mir auch warum. mfg LuZi Code: Public Class Form1 Dim Zaehler1 Dim Zaehler2 Dim Nenner1 Dim Nenner2 Dim Ergebnisnenner Dim Ergebniszaehler Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged TextBox1 = Zaehler1 End Sub Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged TextBox4 = Zaehler2 End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged TextBox2 = Nenner1 End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged TextBox3 = Nenner2 End Sub Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Ergebniszaehler As Integer = Zaehler1 * Zaehler2 Dim Ergebnisnenner As Integer = Nenner1 * Nenner2 Label4.Text = Ergebniszaehler Label3.Text = Ergebnisnenner End Sub Private Sub Label4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label4.Click End Sub Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub TextBox6_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox6.TextChanged TextBox6.Text = Ergebniszaehler End Sub Private Sub TextBox5_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox5.TextChanged TextBox5.Text = Ergebnisnenner End Sub End Class + Multi-Zitat Zitieren
#2 2. Februar 2009 Ich meine ein Fehler wäre: TextBox1 = Zaehler1 TextBox4 = Zaehler2 ... usw. Willste du nicht dem Zähler den Wert geben, der in der Textbox steht? Sprich: Zaehler = TextBox1 ...usw. ? Und schreibt man nicht "Me.TextBox1" oder "[TextBox1]" statt einfach nur "TextBox1"? Ich bin kein vba-Experte, ist mir nur so auf die schnelle aufgefallen. Sorry wenn das was ich gesagt habe Humbuck ist, mag solch unqualifizierte Antworten eigtl. garnicht ^^ Aber vllt. klappts ja. Edit: Und deklarier die Variablen doch gleich oben. Du arbeitest mit Zaehler1 und 2 obwohl du sie oben noch garncht deklariert hast. (Also "As Integer" noch dahinter) und dann kannst du unten beim Button1_click das "Dim Ergebniszaehler As Integer" rausnehmen und einfach nur "Ergebniszaehler" hinschreiben, ansonsten wäre das echt unsauberer Programmierstil^^ + Multi-Zitat Zitieren
#3 2. Februar 2009 Du hast da einiges Falsch gemacht zunächst einmal zum auslesen Code: Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged TextBox1 = Zaehler1 End Sub das ist nicht richtig. Du musst das so machen: Code: Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged Zaehler1 = TextBox1.Text End Sub Das musst du natürlich auch bei allen anderen machen. Zeahler2 = TextBox4.Text Nenner1 = TextBox2.Text Nenner2 = TextBox3.Text //Edit Und ganz oben die Code: Dim Zaehler1 Dim Zaehler2 Dim Nenner1 Dim Nenner2 Dim Ergebnisnenner Dim Ergebniszaehler so deklarieren Code: Dim Zaehler1, Zaehler2, Nenner1, Nenner2, Ergebnisnenner, Ergebniszaehler as Integer LG Farin + Multi-Zitat Zitieren
#4 2. Februar 2009 ok ich danke euch. kann im moment leider nich bewerten. werde es am abend nachholen. aber wie gesagt.. blutigster anfänger und wie gebe ich die ergebnisse in eine textbox aus? Habe jetzt editiert, da er mir einen Fehler angezeigt hat und das Pragramm nach dem Debuggen sich immer aufhängt. Code: Dim Ergebniszaehler As Integer = Zaehler1 * Zaehler2 Dim Ergebnisnenner As Integer = Nenner1 * Nenner2 If Ergebniszaehler < 1000000 Then Ergebniszaehler = TextBox6.Text Else MsgBox(" Zahl ist zu groß") End If If Ergebnisnenner < 1000000 Then Ergebnisnenner = TextBox5.Text Else MsgBox(" Zahl ist zu groß") End If + Multi-Zitat Zitieren
#5 2. Februar 2009 Code: Dim Ergebniszaehler As Integer = Zaehler1 * Zaehler2 Dim Ergebnisnenner As Integer = Nenner1 * Nenner2 Mach die "Dim" und "As Integer" weg und schreib die schon ganz am Anfang hinter deine Variablen (wie mein Vorvorposter schon sagte). Code: Ergebniszaehler = TextBox6.Text Mit dieser Codeline weist du der Variable Ergebniszaehler den Wert zu, der in deiner TextBox6 steht. Du willst es aber genau andersrum machen, also vertauschen + Multi-Zitat Zitieren
#6 2. Februar 2009 hejj geil es funzt... und wie schaffe ich es jetz noch dass er zb aus 12/10*12/10= 100/20 5/1 macht?? + Multi-Zitat Zitieren
#7 5. Februar 2009 Um einen sauberen Programmierstil in VB entwickeln zu können solltest du IMMER im Kopf deines Quellcodes OPTION EXPLICIT angeben,somit verhinderst du, dass Variablen uinsauber deklariert werden können!!!!! VB ist zwar einfach für den Anfang, aber man versaut sich den Programmierstil unheimlich, weil man mit VB sehr schlampig arbeiten kann. Code: OPTION EXPLICIT Sub Main() End Sub + Multi-Zitat Zitieren
#9 5. Februar 2009 Mit unsauber meine ich eine eindeutige Deklaration, Bei VB ist es möglich eine Variable zu deklarieren, welche keinen bestimmten Typ hat, also z.B. Code: Dim i i=1 i = "test" Die OPTION EXPLICIT verhindert u.a. so etwas + Multi-Zitat Zitieren