vba excel Variable als ZAHL eintragen

...komplette Frage anzeigen

3 Antworten

Vermutlich enthält bereits SpezDampf eine Labelzahl.
kannst Du im Direktbereich-Fenster (Anzeige) testen mit dem Code
debug.print isnumeric(Spezdampf.value) '--> FALSCH, wenn Label
versuchs mal mit
SpezDampf = val(Sheets(Sheet).Range("M47").Value)

Iamiam 29.01.2015, 20:37

Versuchs auch mal -sofern es eine deutsche xl-Datei ist- mit
...Numberformatlocal = "0,0" '(Null-Komma-Null)
Hab nicht nachgeschaut, ob ich mich da richtig erinnere, aber es gibt einige ...local-Eigenschaften (zB Formulalocal)

0
Iamiam 29.01.2015, 20:44
@Iamiam

zeichne doch mal ein Makro auf, in dem Du die Formatierung einer Zelle als Zahl durchführst, ggf auch mit einem Ben.def. Zahlenformat!
Ich hab so immer am meisten gelernt, gerade, wenn es sich um Syntax-Probleme gehandelt hat.
Geht natürlich nicht bei dynamischen Befehlen! (if-then, For-next usw.)

0

Konvertiere doch SpezDampf in eine Zahl (CInt oder CDbl o. ä.)

derdigge1982 28.01.2015, 19:14

Wow Danke für die Schnelle Antwort aber das funktioniert nicht. Er trägt dennoch die zahl als Text ein. Wenn ich die Zahl ohne Format() einlese geht es nur ist sie dann schlecht verarbeitbar in if statements.

0
Suboptimierer 28.01.2015, 19:26
@derdigge1982

If-Statements könne in der Regel Zahlen sogar schneller verarbeiten als Worte

If x = 123 geht schneller als If x = "ABC"

Hat die Zahl zu viele Nachkommastellen, könntest du sie runden. Man formatiert etwas eigentlich erst dann, wenn man es zur Anzeige bringen will.

Du kannst auch SpezDampf als numerische Variable (Double) deklarieren:

Dim doppelt# ' oder
Dim zweifach as Double
1

Formatiere die Zelle nach dem Eintrag des Wertes einfach:

Sheets(MagicMaske).Range("J" & runde + 2).Value = SpezDampf
Sheets(MagicMaske).Range("J" & runde + 2).).NumberFormat = "0.0"

Hier im Beispiel mit einer Nachkommastelle. Bei = "0000" wird aus 1 dann 0001, weil immer auf vier Stellen ergänzt wird (mit vorangestellten Nullen)

Hoffe es hilft

Was möchtest Du wissen?