Anzeige
Archiv - Navigation
1148to1152
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

Format-Problem

Format-Problem
Lorenz
Hallo,
Wenn ich mit VBA "Zelle.Formula = Zelle.Value" einen Wert mit "00" vorangesetzt übertrage, dann werden die Nullwerte abgeschnitten, obwohl vor "Zelle.Formula = Zelle.Value" die Nullen aufgrund einer Formelberechnung dargestellt werden
wie kann man das lösen?
PS Zelle ist as range dimensioniert
Gruß
Lorenz
Zelle.Formula = Zelle.Text (owT)
29.03.2010 15:38:00
Renee

Formatierung ist nötig
29.03.2010 16:15:30
Erich
Hi zusammen!.
Renée, dein Vorschlag hilft vermutlich leider nicht weiter.
Ich sehe zwei Möglichkeiten:
Wenn in der Zelle eine Zahl stehen soll, dann kann man die Darstellung führender Nullen
nur durch das Zellformat erreichen (z. B. NumberFormat = "000,000.00").
Auch wenn in der Zelle Text stehen soll, geht das mit Hilfe des Zellformats:
Man formatiert die Zelle vor dem Eintrag des Wertes als Text (NumberFormat = "@").
Habe ein wenig gespielt:

Sub aaZahl()
Dim rngZ As Range
Set rngZ = Cells(1, 1)
Cells(1, 2) = 456
With rngZ
.NumberFormat = "General"
.Formula = "=""00""&2*B1"
MsgBox 1
.NumberFormat = "000,000.00"
.Formula = .Text
MsgBox 1
End With
End Sub
Sub aaText()
Dim rngZ As Range
Set rngZ = Cells(1, 1)
Cells(1, 2) = 456
With rngZ
.NumberFormat = "General"
.Formula = "=""00""&2*B1"
MsgBox 1
.NumberFormat = "@"
.Formula = .Text
MsgBox 1
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
@Erich, warum soll das nicht helfen ?
29.03.2010 16:19:01
Renee
Hi Erich,
In der Anfrage steht klar : ...Nullen aufgrund einer Formelberechnung dargestellt werden.., darum nehme ich nicht an, dass die Formatierung reinspielt und somit müsste mein Vorschlag funktionieren!
GreetZ Renée
@Renée: Beispiel
29.03.2010 16:38:22
Erich
Hi Renée,
probier mal

Sub aaZahl()
Dim rngZ As Range
Set rngZ = Cells(1, 1)
Cells(1, 2) = 456
With rngZ
.NumberFormat = "General"
.Formula = "=""00""&2*B1"
MsgBox 1
'      .NumberFormat = "000,000.00"
.Formula = .Text
MsgBox 2
End With
End Sub
Hier habe ich die Zahlformatierung auskommentiert.
Die führenden Nullen verschwinden auch bei .Formula = .Text, wie bei .Formula = .Value
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
...warten wir's ab .... (owT)
29.03.2010 16:53:07
Renee

Mit .Text wird der Zellwert so zurückgegeben...
29.03.2010 19:34:24
Luc:-?
…wie er formatiert ist, und eben als Text!
Wenn auch per Fml erzeugte Vornullen angezeigt wdn sollen, muss das Ergebnis entweder Text oder mit Vornullen formatiert sein. Also dürfte Renées Vorschlag ausreichen. Insofern vollzieht Erich nur das nach, was eigentl bereits vorliegen müsste/sollte. Ist das nicht der Fall, wird .Text zwar Text liefern, aber ggf ohne Vornullen, wenn die Zelle standardformatiert ist. Nebenbei, eine Formatierung einer eine Fml enthaltenden Zelle als Text (@), behandelt auch die Fml als Text, verbietet sich also. Richtig wäre hier stets wenigstens ;;;@!
Gruß Luc :-?
Anzeige
AW: Mit .Text wird der Zellwert so zurückgegeben...
29.03.2010 20:18:03
Lorenz
Hallo Luc :-?
soweit alles okay. Mein Problem war, daß ich nicht nur in der Zelle dargestellte vorangestellte Null brauche, sondern auch als ZellInhalt, da aus anderen Sheet der Wert (Inhalt mit Null) abgefragt, bzw weiterverarbeitet wird (werden). Somit brauchte ich "Nullen aufgrund einer Formelberechnung werden" genauso den Zellinhalt mit Null(en).
Danke & Grüße
Lorenz
Bitte sehr! Gruß zurück! ;-) owT
30.03.2010 01:23:11
Luc:-?
:-?
AW: Zelle.Formula = Zelle.Text (Lösung)
29.03.2010 17:26:42
Lorenz
Hallo Renee,
Erich hat Recht ;-)
Hab´s so gelöst:
If Zelle.Value = "099" Or Zelle.Value = "095" Then
With Zelle
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
Else
Zelle.Formula = Zelle.Value
End If
Ob´s programmiertechnisch OK ist, sei dahingestellt, aber es funktioniert
Grüße
Lorenz
Anzeige
Lösung ist unklar
29.03.2010 19:33:29
Erich
Hallo ,
deine Lösung verstehe ich so nicht.
Wie lautet die Formel?
Was ist der Wert von Zelle?
Was soll nachher in der Zelle stehen - Zahl oder Text?
Wie ist die Zelle formatiert?
Das Copy/Paste halte ich für überflüssig. Probier bitte mal diese Versionen aus:

Sub aaUnb1()   ' das ist deine Version
If Zelle.Value = "099" Or Zelle.Value = "095" Then
With Zelle
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End With
Else
Zelle.Formula = Zelle.Value
End If
End Sub
Sub aaUnb2()   ' With ist gut, dann aber auch gleich überall
With Zelle
If .Value = "099" Or .Value = "095" Then
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Else
.Formula = .Value
End If
End With
End Sub
Sub aaUnb3()   ' Copy/PasteSpecial wird wohl nicht gebraucht
With Zelle
.Formula = .Value
End With
End Sub
Sub aaUnb4()   ' vermeidet den geschützen Begriff "Zelle" (ist eine Excelfkt.)
With rngZ
.Formula = .Value
End With
End Sub
Sub aaUnb5()   ' kürzer ohne "With"
rngZ.Formula = rngZ.Value
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Lösung ist unklar
29.03.2010 20:09:27
Lorenz
Hallo Erich,
Die Formel lautet:
=WENN(irgendwas;"099";"H330") (ähnlich) hab mehrfache Verschachtelung!
Die Zelle:
war versuchsweise als "Text, Benutzerdef. (0##), Zahl,..) erfolglos formatiert
die verwendete neue (funktionierende) Codeschnipsel (aus 495 Zeilen) lautet:
For Each rngZ In Union(Range(Cells(2, "A"), Cells(33, "AV")), Range(Cells(36, "A"), Cells(67, "AV")), _
Range(Cells(70, "A"), Cells(101, "AV")), Range(Cells(104, "A"), Cells(135, "AV")), Range(Cells(138, "A"), _
Cells(169, "AV")), Range(Cells(172, "A"), Cells(203, "AV")), Range(Cells(206, "A"), Cells(237, "AV")))
With rngZ
If .Value = "099" Or .Value = "095" Then
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Else
.Formula = .Value
End If
End With
Next
Habe natürlich "With ist gut, dann aber auch gleich überall" von dir übernommen.
Code funkt so wie er jetzt ist
Danke u. viele Grüße
Lorenz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige