Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert sind; Die von diesem Forum gesetzten Cookies düfen nur auf dieser Website verwendet werden und stellen kein Sicherheitsrisiko dar. Cookies auf diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Die Updates sind abgeschlossen. Bitte meldet eventuelle Bugs und Auffälligkeiten im entsprechenden Forum.
Sollte das Loginfenster nicht sichtbar sein, ist es unten links. Entweder Ihr loggt Euch dort ein oder löscht den Browsercache und versucht es noch einmal.


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.
Antwortento 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 7 / Office 2007
Antwortento 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
Antwortento 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
Antwortento top
#5
Hallo Frank,

(05.07.2014, 15: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 7 / Office 2007
Antwortento top
#6
(05.07.2014, 15:47)Steffl schrieb: ...zu beschwerlich 20 Textboxen einzufügen...
Danke Stefan, werd es gleich ummodeln und einpflegen

mfg
Antwortento top
#7
(05.07.2014, 15: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: 21)

nehme nach wie vor jegliche Hilfe an, ich will die Code verstehen lernen.
mfg
Antwortento 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. ! ;-)

Gruß Uwe
Antwortento 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 7 / Office 2007
Antwortento 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
Antwortento top


Gehe zu:


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