Clever-Excel-Forum

Normale Version: Textboxinhalt as Integer ???
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

habe einige TextBoxen, die ich bereits durch angepasste Länge (max Length im Eigenschaftsfeld) und über folgende Prozedur:

'nur ganzzahlige Zahlen 0-9 zulassen

Private Sub edtBussgelder_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Select Case KeyAscii
Case 48 To 57
Case Else: KeyAscii = 0
End Select

beschränke.

Nach der der Übernahme durch :

'Ermittlung der letzten verwendeten Zeile
ZeileMax = .UsedRange.Rows.Count
Zeile = ZeileMax + 1

.Range("A" & Zeile).Value = Me.edtMPNr

in eine Tabelle, werden diese leider nur als Text übernommen, was wiederum unpraktisch für weitere Berechnungen ist.

ich habe versucht den Inhalt der TextBoxen als Zahl zu definieren und bin trotz Internetrecherche kläglich gescheitert, was unterschiedlichste gründe hat.
-fehlendes Verständnis wo ich dieses einbaue, wie ich es auf meinen Fall anwende... ob es sich mit dem AsciiCode vereinbart???
wünschenswert wäre etwas wie:
dim edt.MpNr.value as integer

oder gibt es eine Möglichkeit beim Übertragungsprozess in die Tab die Texte in Zahlen um zuwandeln?
habe vallng im Internet gefunden, mein VBA erkennt dies scheinbar nicht?

steh grad völlig auf dem Schlauch...
wäre für jede Hilfe dankbar
Hallo,

eine TextBox liefert Text und Du musst den Wert mit einer Umwandlungfunktion (CInt, CLng, CDbl....) umwandeln.

Code:
.Range("A" & Zeile).Value = CInt(Me.edtMPNr)
Hallo,

dafür gibt es Typ-Umwandlungsfunktionen. Gib im VBA Editor in der Hilfe "Typ-Umwandlungsfunktionen" ein und schau sie Dir an.

Für Dezimalzahlen geht z.B CCur()

Dein Beispiel ginge so:

.Range("A" & Zeile).Value = CCur(Me.edtMPNr)

Man kann aber eine als Text vorliegende Zahl durch eine Rechenoperation mit einer Zahl in eine Zahl umwandeln.
Viele Worte für das:

.Range("A" & Zeile).Value = Me.edtMPNr * 1

Ihr seid SUPER

Danke

wenn doch alle Dinge so einfach wären ;)
Habe ein neues ähnliches Problem in meiner Plausibilitätsprüfung

das Speichern/übertragen in eine ExcelTabelle als Zahl klappt.

ABER:
mit *1 kommt hier leider immer ein Fehler: 13 Typen unverträglich

If edtA.Value * 1 + edtB.Value * 1 + edtC.Value * 1 + edtE.Value * 1 < edtF.Value * 1 Then
Lauf = Lauf + 1
MsgStr = MsgStr & CStr(Lauf) & ". TEXT" & vbCrLf
If Not IstSel Then
IstSel = True
edtA.SetFocus
End If
End If

Seltsamerweise funktionierte es zunächst im UserForm gut, bis ich die Datei geschlossen und wieder geöffnet habe. Zufall?

würde das mit Clng gehen und wenn wie? so leider auch nicht :(

If CLng(edtA.Value) < CLng(edtF.Value) Then
Hallo,

(16.03.2017, 13:11)soldblub schrieb: [ -> ]Seltsamerweise funktionierte es zunächst im UserForm gut, bis ich die Datei geschlossen und wieder geöffnet habe. Zufall?

ohne das Drumherum vom deinen Code zu kennen, vermute ich mal: der Code steht im Initialize-Ereignis der Userform, welche wiederum beim Starten der Datei geöffnet wird. Da sind aber deine TextBoxen wahrscheinlich noch leer und mit einem Leerstring kann nicht multipliziert werden. Versuche es mal mit Val-Funktion.

Code:
If Val(edtA.Value) * 1 + Val(edtB.Value) * 1 + Val(edtC.Value) * 1 + Val(edtE.Value) * 1 < Val(edtF.Value) * 1 Then
Danke dir.

habe die Überprüfung zwar nicht im Initialize sondern im eigen Sub InhalteCheck aber Problem ist trotzdem durch Val(edt...)*1 gelöst.