Microsoft Excel

Herbers Excel/VBA-Archiv

Addieren von Textboxen - Fehlermeldung

Betrifft: Addieren von Textboxen - Fehlermeldung von: Gerhard
Geschrieben am: 13.08.2008 23:47:20

Hallo nochmals

ich mochte mit folgender Zeile Textboxen addieren:

Private Sub TXT_ZEIT3_Change()

TXT_ERG = CDbl(TXT_ZEIT1.Value) + CDbl(TXT_ZEIT2.Value) + CDbl(TXT_ZEIT3.Value)
End Sub



Funzt...

Allerdings wenn ich jetzt in txt_Zeit1 oder txt_Zeit2 die Zahl lösche um sie zu verbessern bekomme ich eine Fehlermeldung: Typen unverträglich.

Was muss ich tun das ich diese Fehlermeldung nicht erhalte?

Gruß Gerhard

  

Betrifft: AW: Addieren von Textboxen - Fehlermeldung von: Tino
Geschrieben am: 13.08.2008 23:58:12

Hallo,
eine Möglichkeit.

TXT_ERG = CDbl(IIf(IsNumeric(TXT_ZEIT1.Value), 0, TXT_ZEIT1.Value)) + _
          CDbl(IIf(IsNumeric(TXT_ZEIT2.Value), 0, TXT_ZEIT2.Value)) + _
          CDbl(IIf(IsNumeric(TXT_ZEIT3.Value), 0, TXT_ZEIT3.Value))




Gruß Tino


  

Betrifft: Korrektur !!! von: Tino
Geschrieben am: 14.08.2008 00:00:44

Hallo,
sorry Fehler!

TXT_ERG = CDbl(IIf(IsNumeric(TXT_ZEIT1.Value), TXT_ZEIT1.Value, 0)) + _
          CDbl(IIf(IsNumeric(TXT_ZEIT2.Value), TXT_ZEIT2.Value, 0)) + _
          CDbl(IIf(IsNumeric(TXT_ZEIT3.Value), TXT_ZEIT3.Value, 0))




Gruß Tino


  

Betrifft: Addieren funktioniert, jetzt Prob. mit Runden von: Gerhard
Geschrieben am: 14.08.2008 06:03:18

Moin Tino

thx für die Hilfe...

so habe ich es nun eingebaut:

Private Sub TXT_ZEIT3_Change()

TXT_ERG = CDbl(IIf(IsNumeric(TXT_ZEIT1.Value), TXT_ZEIT1.Value, 0)) / 100 + _
          CDbl(IIf(IsNumeric(TXT_ZEIT2.Value), TXT_ZEIT2.Value, 0)) / 100 + _
          CDbl(IIf(IsNumeric(TXT_ZEIT3.Value), TXT_ZEIT3.Value, 0)) / 100

End Sub



Private Sub TXT_ZEIT2_Change()

TXT_ERG = CDbl(IIf(IsNumeric(TXT_ZEIT1.Value), TXT_ZEIT1.Value, 0)) / 100 + _
          CDbl(IIf(IsNumeric(TXT_ZEIT2.Value), TXT_ZEIT2.Value, 0)) / 100 + _
          CDbl(IIf(IsNumeric(TXT_ZEIT3.Value), TXT_ZEIT3.Value, 0)) / 100

End Sub



Private Sub TXT_ZEIT1_Change()

TXT_ERG = CDbl(IIf(IsNumeric(TXT_ZEIT1.Value), TXT_ZEIT1.Value, 0)) / 100 + _
          CDbl(IIf(IsNumeric(TXT_ZEIT2.Value), TXT_ZEIT2.Value, 0)) / 100 + _
          CDbl(IIf(IsNumeric(TXT_ZEIT3.Value), TXT_ZEIT3.Value, 0)) / 100

End Sub




Ich musste noch die Eingabe der Ganzzahlen (es sind ausschliesslich nur positive Ganzzahlen) durch 100 teilen.
Soweit so gut, funzt alles. Wo ich mir gerade die Zähne ausbeisse ist folgendes:
Wie schaffe ich es das das Ergebniss in Textbox TXT_ERG auf eine (!!!) Kommastelle gerundet und angezeigt wird?

Hat da jemand nen Tipp für mich?

LG


  

Betrifft: AW: Runden funktioniert auch von: Erich G.
Geschrieben am: 14.08.2008 07:22:59

Hallo Gerhard,
das Addieren (und Runden) musst du nicht in drei Prozeduren schreiben.

Probier mal:

Private Sub TXT_ZEIT3_Change()
   TextAdd
End Sub

Private Sub TXT_ZEIT2_Change()
   TextAdd
End Sub

Private Sub TXT_ZEIT1_Change()
   TextAdd
End Sub

Private Sub TextAdd()
   TXT_ERG = Format( _
      CDbl(IIf(IsNumeric(TXT_ZEIT1.Value), TXT_ZEIT1.Value, 0)) / 100 + _
      CDbl(IIf(IsNumeric(TXT_ZEIT2.Value), TXT_ZEIT2.Value, 0)) / 100 + _
      CDbl(IIf(IsNumeric(TXT_ZEIT3.Value), TXT_ZEIT3.Value, 0)) / 100, "0.0")
End Sub

'oder

Private Sub TextAdd2()
   TXT_ERG = Application.Round( _
      CDbl(IIf(IsNumeric(TXT_ZEIT1.Value), TXT_ZEIT1.Value, 0)) / 100 + _
      CDbl(IIf(IsNumeric(TXT_ZEIT2.Value), TXT_ZEIT2.Value, 0)) / 100 + _
      CDbl(IIf(IsNumeric(TXT_ZEIT3.Value), TXT_ZEIT3.Value, 0)) / 100, 1)
End Sub

Die "Format"-Rundung liegt etwas näher, da ja in die Textbox ohnehin Text geschrieben wird.

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Welches Ereignis? von: Erich G.
Geschrieben am: 14.08.2008 07:43:33

Hi Gerhard,
noch eine Frage:

Soll das Ergebnis immer schon bei Eingabe eines einzelnen Zeichens angezeigt werden?
Dann ist das Change-Ereignis ok.

Oder reicht es aus, wenn die Summe erst dann erscheint, wenn ein Textfeld "fertig gefüllt" ist
und verlassen wird?

Dafür mal drei Möglichkeiten:

Private Sub TXT_ZEIT1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
   TextAdd
End Sub

Private Sub TXT_ZEIT2_AfterUpdate()
   TextAdd
End Sub

Private Sub TXT_ZEIT3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   TextAdd
End Sub

Private Sub TextAdd()
   TXT_ERG = Format( _
      CDbl(IIf(IsNumeric(TXT_ZEIT1.Value), TXT_ZEIT1.Value, 0)) / 100 + _
      CDbl(IIf(IsNumeric(TXT_ZEIT2.Value), TXT_ZEIT2.Value, 0)) / 100 + _
      CDbl(IIf(IsNumeric(TXT_ZEIT3.Value), TXT_ZEIT3.Value, 0)) / 100, "0.0")
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: DANKE!!! von: Gerhard
Geschrieben am: 14.08.2008 21:08:57

Servus!!!

Vielen vielen Dank!!!!

@Erich

Soll das Ergebnis immer schon bei Eingabe eines einzelnen Zeichens angezeigt werden?
Dann ist das Change-Ereignis ok.



Jepp so sollte es sein und deswegen habe ich mich für den ersten Vorschlag entschieden.
Die anderen habe ich sicherheitshalber ma kopiert... ma kucken was mir wieder fürn Blödsinn einfällt, wo ich bestimmt dann darauf zurückgreifen kann...

Greetz...


  

Betrifft: AW: Addieren von Textboxen - Fehlermeldung von: Daniel
Geschrieben am: 14.08.2008 01:04:58

Hi

alternative einfachere Variante, funktioniert aber nur mit der Einschränkung, daß bei Negativen Werten daß "-" nachgestellt werden muss (dh "100-" statt "-100"). und wenn du fälschlicher weise auf ne Buchstabentaste drückst, gibts auch nen Fehler. (von daher ist Tinos Variante schon die bessere)

TXT_ERG = CDbl("0" & TXT_ZEIT1.Value) + CDbl("0" & TXT_ZEIT2.Value) + CDbl("0" & TXT_ZEIT3.Value)

Gruß, Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "Addieren von Textboxen - Fehlermeldung"