leere Textboxen abfangen - wegen addieren
#1
Hallo @all
Rechnen oder addieren will nicht mit leeren Textboxen klappen
Code:
Private Sub CommandButton1_Click()
txt_summe = CDbl(txt_wert_01) + CDbl(txt_wert_02) + CDbl(txt_wert_03) + ......... bis zu 20 Textboxen
End Sub

Bin mal wieder am tüfteln (VBA-Anfänger)
Können zwecks berechnen der Inhalte der Textboxen, leere nicht durch eine Anweisung z.b. wenn - dann übersprungen werden.

Gedankengang:
Textbox1 wurde befüllt (7) Sprung zu Textbox2, diese hat den Wert (15) bekommen, kann jetzt nicht schon in der Textbox Summe der addierte Wert angezeigt werden.
Ist allerdings eine Textbox nicht befüllt sollte diese nicht mit in die Berechnung einfließen
If - then oder irgend eine Function oder IfNumeric oder mit UserForm_Initialize oder oder .... ???

Wäre echt hilfreich hierzu Hilfe von euch zu erfahren.
Top
#2
Hallo Frank,

versuche es mal so

Code:
Private Sub CommandButton1_Click()
   Dim lngBox As Long
   Dim dbltxtSumme As Double
  
   For lngBox = 1 To 4
      If IsNumeric(Controls("txt_wert_" & Format(lngBox, "00"))) Then dbltxtSumme = dbltxtSumme + CDbl(Controls("txt_wert_" & Format(lngBox, "00")))
  
   Next lngBox


End Sub
Gruß Stefan
Win 10 / Office 2016
Top
#3
Hallo Frank,

z.B. so:

txt_summe = Application.Sum(0 & txt_wert_01, 0 & txt_wert_02, 0 & txt_wert_03)

Gruß Uwe
Top
#4
Hallo Stefan & Uwe

@Stefan
bekomme deinen Code nicht ans laufen, 'dbltxtSumme' ist das der neuere Name für die Textbox txt_Summe
Code:
For lngBox = 1 To 4
anstelle 4 = 20, muss hier ebenfalls noch modifiziert werden, da 20 Textboxen ??

@Uwe
danke für den Einzeiler

mfg
Top
#5
Hallo Frank,

(05.07.2014, 16:40)WergibtmirRat schrieb: @Stefan
bekomme deinen Code nicht ans laufen, 'dbltxtSumme' ist das der neuere Name für die Textbox txt_Summe
Code:
For lngBox = 1 To 4
anstelle 4 = 20, muss hier ebenfalls noch modifiziert werden, da 20 Textboxen ??

ja klar muss das modifiziert werden, ich hatte ja nur ein Beispiel mit 4 Textboxen aufgebaut (war mir doch zu beschwerlich 20 Textboxen einzufügen und den passenden Namen zu geben)

und ich habe es jetzt anders gelöst mit einer Variablen, die am Ende den Inhalt an eine Textbox übergibt.

Code:
Private Sub CommandButton1_Click()
   Dim lngBox As Long
   Dim dbltxtSumme As Double
  
   For lngBox = 1 To 4
      If IsNumeric(Controls("txt_wert_" & Format(lngBox, "00"))) Then dbltxtSumme = dbltxtSumme + CDbl(Controls("txt_wert_" & Format(lngBox, "00")))
   Next lngBox

End Sub
Gruß Stefan
Win 10 / Office 2016
Top
#6
(05.07.2014, 16:47)Steffl schrieb: ...zu beschwerlich 20 Textboxen einzufügen...
Danke Stefan, werd es gleich ummodeln und einpflegen

mfg
Top
#7
(05.07.2014, 16:47)Steffl schrieb: ...mit einer Variablen, die am Ende den Inhalt an eine Textbox übergibt...
Hallo Helfende,
anbei die Datei mit beiden Wegen, ich komm da nicht mit klar bzw. es bleibt mir im Verborgenen wo was zu ändern ist

.xls   Anklicken zur veranschaulichung.xls (Größe: 52,5 KB / Downloads: 27)

nehme nach wie vor jegliche Hilfe an, ich will die Code verstehen lernen.
mfg
Top
#8
Hallo Frank,

wenn Du die TextBoxen anders benennst als vorher hier im Forum, kann es nicht gehen.

in UserForm2 passt es mit txt_wert_01 usw.,
in UserForm1 heißen sie txt_wert_1 usw. ! Wink

Gruß Uwe
Top
#9
Hallo Frank,

wie bereits von Uwe angesprochen. Die Namen müssen schon passen. Außerdem hattest Du eine Textbox so benannt, wie ich eigentlich eine Variable bezeichnet habe. Das beißt sich dann auch. Ich habe nun im Code die Bezeichnungen der Textboxen angepasst, die Variable umbenannt und lasse am Ende den Variableninhalt in die Textbox eintragen.

Code:
Private Sub CommandButton1_Click()
   Dim lngBox As Long
   'das ist eine Variable!
   Dim dbltxtEintragSumme As Double
   For lngBox = 1 To 4
      If IsNumeric(Controls("txt_wert_" & lngBox)) Then dbltxtEintragSumme = dbltxtEintragSumme + CDbl(Controls("txt_wert_" & lngBox))
   Next lngBox
   dbltxtSumme = dbltxtEintragSumme
End Sub
Gruß Stefan
Win 10 / Office 2016
Top
#10
Hallo Frank,

wenn Du anstelle von CDbl mit Val arbeitest, dürfen in den TextBoxes sogar Text stehen, denn Val macht dann Null-Werte daraus.

PHP-Code:
Option Explicit

Private Sub Label1_Click()

Dim iIndx    As Integer
Dim dSumme   
As Double

   
For iIndx 1 To 20
      dSumme 
dSumme Val(Replace(Controls("txt_wert_" Format(iIndx"00")).Value",""."))
   
Next iIndx
   
   Label1
.Caption Format(dSumme"#,##0.00")

End Sub 

Gruß Peter
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste