Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1096to1100
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Textbox.Value mit -1 multiplizieren => Fehler

VBA: Textbox.Value mit -1 multiplizieren => Fehler
Mathias
Hallo zusammen!
Bin neu hier und habe vieles aus anderen Beiträgen abkupfern können. Im Moment drückt die Zeit, so dass ich keinen echten systematischen Einstieg gewählt habe sondern eher Codes aus div. Foren zusammenkopiert habe und per learning by doing das meiste hinbekommen habe. Hat bis jetzt ganz gut funktioniert, doch jetzt komme ich nicht weiter:
Hintergrund ist ein kleines Programm, welches für eine Kaffekasse dient. Wer wann wieviel einzahlt, das passt alles. Jetzt bin ich an dem Punkt "Sonderzahlungen", d.h. Sondereinzahlungen und Entnahmen. Bei letzterem streikt mein Code, ABER NUR bei Kommazahlen.
Hier mal die Bausteine:
Eingabe der € [Formatiert habe ich die Excel-Zellen, nicht die Eingabe der Textboxen]:
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 13 Then
KeyAscii = 0
MsgBox "Osterei gefunden"
ElseIf KeyAscii = 46 Or KeyAscii = 44 Then
If InStr(TextBox2.Text, ".") Then
KeyAscii = 0
ElseIf KeyAscii = 44 Then 'liefert Punkte
KeyAscii = 46 'liefert Punkte
End If
ElseIf KeyAscii > 58 Or KeyAscii  8 Then
KeyAscii = 0
End If
End Sub
Funktioniert, wie ich mir das vorstelle.
Auswahl Ein- oder Auszahlung über optionbuttons:
Private Sub CommandButton1_Click()
Dim erste_freie_Zeile As Integer
erste_freie_Zeile = Sheets("Sonderzahlungen").Range("A65536").End(xlUp).Offset(1, 0).Row
If OptionButton1.Value Then
Sheets("Sonderzahlungen").Cells(erste_freie_Zeile, 1) = TextBox1.Text
Sheets("Sonderzahlungen").Cells(erste_freie_Zeile, 2) = TextBox2.Text
Sheets("Sonderzahlungen").Cells(erste_freie_Zeile, 3) = TextBox3.Text
ElseIf OptionButton2.Value Then
Sheets("Sonderzahlungen").Cells(erste_freie_Zeile, 2) = CDbl(TextBox2.Value) * -1
Sheets("Sonderzahlungen").Cells(erste_freie_Zeile, 1) = Date
Sheets("Sonderzahlungen").Cells(erste_freie_Zeile, 3) = TextBox3.Text
Else
MsgBox ("Bitte eine der beiden Optionen auswählen!")
Exit Sub
End If
End If
Unload Me
Unload UserForm2
Load UserForm2
UserForm2.Show
End Sub

Bsp. was mir ausgegeben wird:
Einzahlung (optionbutton1)
5 => dargestellt in Textbox als 5 => Ausgabe an Excel 5,00 €
5,1 => dargestellt als 5.1 => Ausgabe an Excel 5,10 €
5,12 => dargestellt als 5.12 => Ausgabe an Excel 5,12 €
Auszahlung (optionbutton2)
5 => dargestellt in Textbox als 5 => Ausgabe an Excel - 5,00 €
5,1 => dargestellt als 5.1 => Ausgabe an Excel - 51,00 €
5,12 => dargestellt als 5.12 => Ausgabe an Excel - 512,00 €
Lösungsansätze, die ich versucht hatte:
- statt *-1 mit einem weiteren Textbox.value, (fester Wert -1; invisible) => gleiches Ergebnis
- selection.numberformat habe ich mal in einem leeren Tabellenblatt benutzt und da hat es funktioniert. Dreht sich also wohl nur um die Stelle, an die ich es schreibe...
Ich würde mich über eine kurze Rückmeldung freuen.
Grüße
Mathias

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Was soll man da sagen - wird wohl am Format...
19.08.2009 12:17:55
Luc:-?
...der Ausgabezelle liegen, Matthias...
Teile uns doch mal den Formatstring mit! Da gibt's näml was mit "Zwangsformatierung" von Zahltexten mit Dezimalpkt...
Gruß Luc :-?
AW: VBA: Textbox.Value mit -1 multiplizieren => Fehler
19.08.2009 12:23:56
Luschi
Hallo Mathias,
versuch es mal so:
Dim k As Double
k = CDbl(Me.TextBox2.Value) * -1
Sheets("Sonderzahlungen").Cells(erste_freie_Zeile, 2) = k
Gruß von Luschi
aus klein-Paris
Osterei gefunden...eine echte EXCELEI...
19.08.2009 12:23:59
NoNet
Hallo Mathias,
ich würde generell nicht Komma in Punkt umwandeln, sondern (für uns Mitteleuropäer) Punkt in Komma.
Die Funktion CDBL(Textbox2) wandelt den Wert ja schon korrekt in eine Zahl um, die man in das Tabellenblatt schreiben kann. Hier mein Korrekturvorschlag (bitte an einer Kopie ausprobieren !) :
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 13 Then
KeyAscii = 0
MsgBox "Osterei gefunden" 'erscheint, wenn man ALT + 013 (num. Tastatur) eingibt !
ElseIf KeyAscii = 46 Or KeyAscii = 44 Then
If InStr(TextBox2.Text, ".") Then
KeyAscii = 0
ElseIf KeyAscii = 46 Then   'Wenn Komma eingegeben wurde
KeyAscii = 44           'Komma in Punkt umwandeln
End If
ElseIf KeyAscii > 58 Or KeyAscii  8 Then
KeyAscii = 0
End If
End Sub
Private Sub CommandButton1_Click()
Dim erste_freie_Zeile As Integer
With Sheets("Sonderzahlungen")
erste_freie_Zeile = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
If OptionButton1.Value Then 'Einzahlung
.Cells(erste_freie_Zeile, 1) = TextBox1.Text
.Cells(erste_freie_Zeile, 2) = CDbl(TextBox2.Text) 'Umwandlung Text in Zahl
.Cells(erste_freie_Zeile, 3) = TextBox3.Text
ElseIf OptionButton2.Value Then 'Auszahlung
.Cells(erste_freie_Zeile, 1) = Date
.Cells(erste_freie_Zeile, 2) = CDbl(TextBox2.Value) 'Umwandlung Text in Zahl
.Cells(erste_freie_Zeile, 3) = TextBox3.Text
Else
MsgBox ("Bitte eine der beiden Optionen auswählen!")
Exit Sub
End If
End With
Unload Me
Unload UserForm2
Load UserForm2
UserForm2.Show
End Sub
Übrigens : Ich habe Dein "Osterei" gefunden : Wenn man die Eingabe mit ALT + 013 abschließt, erscheint diese Meldung ;-)
Gruß, NoNet
Anzeige
noch ein Vorschlag für Zahlen in Textbox
19.08.2009 12:36:21
Tino
Hallo,
hier eine Funktion die nur Zahlen in Textbox zulässt.
'Funktion zum prüfen einer Textbox ---> Nur Zahlen zulassen 
Private Function OnlyNumbers(objTextBox As MSForms.TextBox, intKeyNumber As Integer) As Integer
Dim PunktOderKomma As String
    
    PunktOderKomma = IIf("0.5" * 2 = 1, ".", ",")
    
    If intKeyNumber = 44 Or intKeyNumber = 46 Then
            If InStr(objTextBox, PunktOderKomma) = 0 And Len(objTextBox) > 0 Then
              OnlyNumbers = IIf("0.5" * 2 = 1, 46, 44)
            Else
              OnlyNumbers = 0
            End If
     Else
            Select Case intKeyNumber
             Case 48 To 57: OnlyNumbers = intKeyNumber
             Case Else: OnlyNumbers = 0
            End Select
     End If

End Function

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 KeyAscii = OnlyNumbers(TextBox2, CInt(KeyAscii))
End Sub
Gruß Tino
Anzeige
AW: VBA: Textbox.Value mit -1 multiplizieren => Fehler
19.08.2009 13:28:27
Mathias
Danke für die schnelle Hilfe. Hat geklappt. Habe noch ein paar Punkte, die ich hier gerne in einem neuen Thread poste, wenn ich es denn alleine nicht hinbekomme..
@Luc:-?: Wie gesagt, ich hatte ja keinen Formatstring in meinem Code.
@Luschi: Hat funktioniert.
@NoNet: Hat ebenfalls funktioniert.
@Tino: Danke, habe mir den Code abgespeichert. Werde ihn wohl als nächstes einbauen um den Code noch schlanker zu halten. Funktioniert aber im Moment auch so. Ich weiß, "Patchwork"...
Formatstring der Zelle war gemeint! owT
20.08.2009 00:39:09
Luc:-?
:-?

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige