VBA Zellenformat ignoriert Nullen?

1 Antwort

Mir raucht gerade der Kopf. Ich habe mir da was "zusammen gestoppelt", was bei mir das richtige Ergebnis generiert, ALLERDINGS bin ich wegen Deines Formats #,# davon ausgegangen, dass das Kommazahlen sind und die Punkte keine Tausendertrennzeichen.
DA bin ich jetzt im Nachhinein aber nicht mehr sicher.
Was ist bei Dir Tausendertrennzeichen und was Deizimalkomma?
Wie ist Deine Ländereinstellung. Hast Du englisches oder deutsches Excel?

Schau Dir am besten mal meinen Code an. Vielleicht klappt er ja, vielleicht bringt er Dich aber zumindest auf Ideen. Ist bestimmt noch nicht optimal.
Für die WorksheetFunction müsste es auch einen direkten Befehl geben, aber den zu suchen hatte ich keine Lust mehr. Ich verabschiede mich erst mal bis morgen:

Sub Test()
'124.350 / 124.350 (100%) <-- So soll es aussehen
Dim Variable1 As Double
Dim Variable2 As Double
Dim Variable3 As Double

Dim numFormat As String
Dim strVariable2 As String
Dim strVariable3 As String

Variable1 = 124.35
Variable2 = 124.35
Variable3 = Round(Variable1 / Variable2 * 100, 0)

strVariable2 = Variable2
strVariable2 = WorksheetFunction.Substitute(strVariable2, ",", ".")

strVariable3 = Variable3

Range("A1") = Variable1

numFormat = "#.000" & """ / """ & strVariable2 & """ (""" & strVariable3 & """%)"""
Range("A1").NumberFormat = numFormat
End Sub

Hallo,

habe deutsches Excel, aber in VBA ist doch , = . und . = , dachte ich? Zumindest bei Dezimalzahlen in VBA muss man ja "." schreiben. Bei mir wird auch ein Tausenderpunkt angezeigt bei dem Format "#,#".

Leider funktioniert der Code so nicht, bei den Variablen 1 und 2 wird im VBA Editor die letzte "0" immer wieder gelöscht. Also statt Variable 1 = 124.350 steht dann da Variable 1 = 124.35.

Der Datenbalken wird auch nicht mehr angezeigt. Habe selbst noch ein bisschen rumexperimentiert aber durch mein begrenztes VBA Wissen komme ich da nicht weiter :).


0
@Kaluz

Bei dem Format:

"#.000"

kann eintgentlich die letzte 0 nicht wegfallen.

Bei mir wird mit diesem Code auch exakt DAS in A1 angezeigt, was im Kommentar ganz oben steht.

Hast Du den Code exakt so übernommen?

0
@Oubyi

Ja habe den Code exakt so kopiert. Die erste Zahl wird auch richtig angezeigt, nur die zweite Zahl nach dem "/" wird als 124.35 angezeigt. Problem ist auch, dass der Datenbalken mit dem Code nicht mehr zu funktionieren scheint. 

0
@Kaluz

Hast recht. Jetzt ist es bei mir auch so.
Habe aber auch ein Lösung:

Sub Test()
'124.350 / 124.350 (100%) <-- So soll es aussehen
Dim Variable1 As Double
Dim Variable2 As Double
Dim Variable3 As Double

Dim numFormat As String
Dim strVariable2 As String
Dim strVariable3 As String

Variable1 = 124.35
Variable2 = 124.35
Variable3 = Round(Variable1 / Variable2 * 100, 0)

strVariable2 = WorksheetFunction.Text(Variable2, "0.000")

strVariable3 = Variable3

Range("A1") = Variable1

numFormat = "#.000" & """ / """ & strVariable2 & """ (""" & strVariable3 & """%)"""
Range("A1").NumberFormat = numFormat
End Sub
1
@Oubyi

Ja das funktioniert jetzt :)

Habe nun auch noch eine andere Lösung erhalten

numFormat = "#,##0"" / " & Format(Variable2, "#,##0") & " (" & Format(Variable3, "0") & "%)"""

Klappt auch.

Danke für deine Hilfe und Mühe :)

1
@Kaluz

DH!
Ja, das Format() ist die direkte Lösung für meine Worksheetfunction.Text.
Ist professioneller, aber ich war wieder zu faul zum suche 🙂
Und ob man das direkt mit in die numFormat Definition schreibt oder einen Umweg macht, wie ich, ist vielleicht Geschmackssache.

Auf jeden Fall schön, dass Du es hinbekommen hast.

0

Warum funktionieren Zellbezüge auf einmal nicht mehr - (Excel-Datei mit VBA)?

Hallo zusammen,

ich arbeite an einem Excel-Programm mit VBA. VBA rechnet verschiedene Werte aus und stellt diese dann a) als Farbverlauf und b) als stinknormales Diagramm dar. Das hat bisher auch astrein funktioniert, man drückt auf Start, die Berechnung geht los, die Farben laufen durch usw...

Nun AUF EINMAL, ohne dass ich etwas geändert hätte, funktionieren offensichtlich die Bezüge nicht mehr. Die Berechnung läuft durch, heißt in den Ergebnisfeldern stehen am Ende die richtigen Werte, nur werden diese weder in den Diagrammen* noch in den Farbfeldern angezeigt. Nun habe ich Excel x-mal neu gestartet, Laptop ebenfalls, und habe keine Ahnung woran das liegen kann.

Habe festgestellt, auch wenn ich in A2 "=A1" und dann in A1 Werte eingebe, werden diese in A2 NICHT angezeigt. Dafür muss ich erneut in A2 gehen und Enter drücken. Dann kommt der Wert - aber auch nur mit Glück.

Langer Rede kurzer Sinn: Excel hat bei mir offensichtlich einen eigenen Willen und Willkür entwickelt, woran in Gottes Namen kann das liegen?

Danke im Voraus!

*Verrückter Zusatz: Geht man in die Diagrammeigenschaften und STREICHT mit der Maus über andere Füllfarben, WÄHLT ABER KEINE AUS! - erscheinen die Werte im Diagramm. Wtf.

...zur Frage

Wie kann man zwei Variablen in einer For-Schleife hochzählen lassen (in VBA ) ?

Ich möchte mithilfe von VBA eine bedingte Formatierung (Hintergrundfarbe) von einzelnen Zellen(jede zweite im Bereich von 2 - 34) innerhalb einer Spalte durchführen. Ist der Wert der entsprechenden Spalte gleich des Wertes in der Zelle links daneben (B), soll die Zelle einen grünen Hintergrund bekommen, ansonsten gelb. Die Spaltenbezeichnungen wollte ich mithilfe einer For-Schleife hochzählen lassen. Wie kann ich dies möglichst einfach realisieren?

Ich bin gerade dabei VBA zu erlernen und dementsprechend noch unerfahren.

...zur Frage

Sind die Werte okay?

Ist ein systolischer Wert von 135 und ein diastolischer Wert von 65 mit einem Ruhepuls von 100-105 im Durchschnitt akzeptabel oder sollte man es von einem Arzt kontrollieren lassen?

...zur Frage

Vba Programm schleife um viele Variablen zu deklarieren

hey habe folgendes Problem: ich brauche in meinem Programm sehr viele Variablen und möchte allen einen wert zuweisen kann ich das übersichtlich in eine schleife packen also nicht so: W1=3 W2=3 W3=3 W4=3 ....... statt dessen will ich alles in eine schleife packen erster versuch:

Dim schleife As Integer
schleife = 1
Do While schleife < 73
W& schleife = 3        'hier ist das problem^^
schleife = schleife + 1
Loop

schon mal danke für eure vorschläge ;)

...zur Frage

Excel Problemlösung ohne VBA?

Hallo!

Ich habe folgendes Problem bei Excel und hoffe es gibt da ne einfache Lösung für ohne mit VBA zu programmieren:

Ich möchte bei meiner bestehenden Tabelle eine Ansicht erstellen, die mir nur bestimmte Werte anzeigt.

Um das zu verdeutlichen hier eine kleine Beispieltabelle:

Spalte 1 Spalte 2 Spalte 3 Spalte 4

Wert X

Wert Y

Wert X

Nehmen wir an, die Tabelle sei komplett mit Daten gefüllt.

Nun möchte ich eine Ansicht haben, bei er ich quasi nur die Zeilen angezeigt bekomme, bei denen Wert X in Spalte 1 ist und ich möchte zusätzlich nur die Spalte 2 und Spalte 4 anzeigen, also Spalte 3 ausblenden. Mit einem SVERWEIS geht das ja prinzipiell, allerdings lässt sich hier ja immer nur ein Wert anzeigen und nicht mehrere Werte mit mehreren Spalten. Gibt es dafür eine simple Lösung?

...zur Frage

String schneidet führende Nullen ab? (vba)?

Hallo zusammen,Gerade bin ich dabei auf Excel eine Datei zu entwerfen (eine Art Konfigurator). Soweit bin ich fast fertig. Am Ende soll der User seinen Namen, Mail und Nummer für den Kontakt eingeben. Diese stehen in drei Textboxen. Nach klick auf einen Button werden diese drei Werte nun in eine Zelle übertragen (auf einem neuen Dokument welches Automatisch erzeugt wird). Alles klappt wunderbar. Nur wird nun bei der Telefonnummer stets (falls vorhanden) die führende Null abgeschnitten, obwohl ich das nicht möchte. Alle Variablen, die die Werte enthalten, sind als String erstellt worden. Warum schneidet er die führende Null ständig ab, bzw. wie kann ich das lösen?Vielen Dank für eure Hilfe.

...zur Frage

Was möchtest Du wissen?