Ich habe 4 TextBoxen die ich summieren muss.
TextBox21, TextBox30, TextBox39, TextBox48
Ich habe schon Kursanzahlen summiert und zwar so:
Dim Kursanzahl1 As Integer
Dim Kursanzahl2 As Integer
Dim Kursanzahl3 As Integer
Dim Kursanzahl4 As Integer
Dim Kursanzahl5 As Integer
Dim Kursanzahl6 As Integer
Dim Kursanzahl7 As Integer
Dim Kursanzahl8 As Integer
Dim Kursanzahl9 As Integer
Kursanzahl1 = TextBox11
Kursanzahl2 = TextBox12
Kursanzahl3 = TextBox13
Kursanzahl4 = TextBox14
Kursanzahl5 = TextBox15
Kursanzahl6 = TextBox16
Kursanzahl7 = TextBox17
Kursanzahl8 = TextBox18
Kursanzahl9 = TextBox19
With UserForm1
TextBox65 = Kursanzahl1 + Kursanzahl2 + Kursanzahl3 + Kursanzahl4 + Kursanzahl5 + Kursanzahl6 + Kursanzahl7 + Kursanzahl8 + Kursanzahl9
Bei den TextBoxen wo es nich klappt s. oben sind es nicht Kursanzahlen, sondern 12.1 , 12.2 usw.
PS.: das soll ein Abi-rechner werden.
Danke jetzt schon mal.
Markus1992
Hi,
Du mußt die Objekte qualifizieren, d.h. benennen, was Du haben willst. VBA nimmt bei uneindeutigem Code einfach einen Standardwert oder konvertiert Variablen nach Gusto.
Ohne Deinen Code genauer gelesen zu haben: das Problem liegt vermutlich an
Kurszahl=Textbox1 .Value
M.
Hallo Markus,
Ich habe schon Kursanzahlen summiert und zwar so:
With UserForm1
was soll das with bringen wenn du es in dem Codeschnipsel nicht benutzt?
Und so wie ich das sehe beinhaltet eine Textbox Text. Wenn du diesen Text in eine Integer-variable einlesen kannst so hat Excel schon für dich mitgedacht.
Okay, scheinbar klappt das erstaunlicherweise.
Jetzt steht wohl in einer Textbox nicht 12 sondern 12.1 wobei ich da 12,1 für angebrachter halte.
Schau mal in der Hilfe nach CDbl(…)
oder gar nach CDbl(Val(…))
Gruß
Reinhard
Hallo,
Bei den TextBoxen wo es nich klappt s. oben sind es nicht
Kursanzahlen, sondern 12.1 , 12.2 usw.
der Code lässt sich deutlich verkürzen, wenn Du den Textboxen die zusammengehören entsprechende Namen gibst. Wenn keine anderen Textboxen da sind, musst Du die Namen nicht ändern, dann geht das so:
Option Explicit
Private Sub CommandButton1\_Click()
Dim su As Double
Dim tb As Control
su = 0
For Each tb In Me.Controls
If Left(tb.Name, 7) = "TextBox" Then
su = su + CDbl(tb.Text)
End If
Next
Label1.Caption = su
End Sub
Statt der Dezimalpunkte musst Du Kommas verwenden, dann klappt das.
Gruß Rainer
Danke an alle die mir eine Antwort auf meine Frage gegeben haben. Kombiniert mit allen Antworten und ein bisschen selber experementiert, habe ich es endlich hinbekommen.
Danke
Markus1992