PDA

Vollständige Version anzeigen : Zahlenformat von Zellen ändern


Paddy521
04.05.2009, 12:34
Hallo zusammen,
Ich versuch grad, in meiner Datei von einem bestimmten Zellbereich per VBA die Zahlenformate in den Zellen zu ändern.
Da der Bereich variabel ist, ist das leider n bisschen komplizierter.
Jetzt hab ich im Internet gesucht und bin auf den folgenden Code gekommen:
Cells(3, i).EntireColumn.Insert
Set berstart = Cells(3, i)
Set berende = Cells(12, i)
adr1 = berstart.Address(False, False)
adr2 = berende.Address(False, False)
adr = adr1 & ":" & adr2
Range(adr).NumberFormat = "#,###0.000"
adr1, adr2 und adr sind als string definiert, berstart und berende als range. i ist der integer, mit dem die Spalte vorgegeben wird.
Laut Internet sollte das so klappen, aber bei mir formatiert er nur die erste und die letzte Zelle in dem angegebenen Bereich um.
Woran liegt das?
Gruß,
Patrick

pefeu
04.05.2009, 13:53
Hallo Patrick,

versuch es so: adr = adr1 & "," & adr2
mit einem Komma und nicht einem Doppelpunkt als Trennung

Gruß Peter

Paddy521
04.05.2009, 16:52
Hallo,
das funktioniert leider auch nicht. Da bekomm ich dann die Fehlermeldung Laufzeitfehler 1004 "Die Methode 'Range' für Objekt '_Global' ist fehlgeschlagen".
Gruß,
Patrick

pefeu
04.05.2009, 16:57
Hallo Patrick,

ich habe eben dein Makroschnipsel vervollständigt und komme zu dem Ergebnis: Bei mir funktioniert es mit dem Doppelpunkt.

<FONT FACE="Arial,FixedSys"Size=2>
<Blockquote>
<FONT COLOR=#0000FF>Option Explicit</FONT>

<FONT COLOR=#0000FF>Public Sub</FONT>&nbsp;Test()

<FONT COLOR=#0000FF>Dim</FONT>&nbsp;i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>As Integer</FONT>
<FONT COLOR=#0000FF>Dim</FONT>&nbsp;berstart&nbsp;<FONT COLOR=#0000FF>As</FONT>&nbsp;Range
<FONT COLOR=#0000FF>Dim</FONT>&nbsp;berende&nbsp;&nbsp;<FONT COLOR=#0000FF>As</FONT>&nbsp;Range
<FONT COLOR=#0000FF>Dim</FONT>&nbsp;adr&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>As String</FONT>
<FONT COLOR=#0000FF>Dim</FONT>&nbsp;adr1&nbsp;&nbsp;<FONT COLOR=#0000FF>As String</FONT>
<FONT COLOR=#0000FF>Dim</FONT>&nbsp;adr2&nbsp;&nbsp;<FONT COLOR=#0000FF>As String</FONT>

&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;3

&nbsp;&nbsp;&nbsp;Cells(3,&nbsp;i).EntireColumn.Insert
&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>Set</FONT>&nbsp;berstart&nbsp;=&nbsp;Cells(3,&nbsp;i)
&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>Set</FONT>&nbsp;berende&nbsp;=&nbsp;Cells(12,&nbsp;i)
&nbsp;&nbsp;&nbsp;adr1&nbsp;=&nbsp;berstart.Address(<FONT COLOR=#0000FF>False</FONT>,&nbsp;<FONT COLOR=#0000FF>False</FONT>)
&nbsp;&nbsp;&nbsp;adr2&nbsp;=&nbsp;berende.Address(<FONT COLOR=#0000FF>False</FONT>,&nbsp;<FONT COLOR=#0000FF>False</FONT>)
&nbsp;&nbsp;&nbsp;adr&nbsp;=&nbsp;adr1&nbsp;&amp;&nbsp;":"&nbsp;&amp;&nbsp;adr2
&nbsp;&nbsp;&nbsp;Range(adr).NumberFormat&nbsp;=&nbsp;"#,###0.000"

<FONT COLOR=#0000FF>End Sub</FONT>&nbsp;

</Blockquote>
<FONT FACE="Courier New,FixedSys"Size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Code eingefügt mit <b><a href="http://rtsoftwaredevelopment.de" target="_blank">Syntaxhighlighter 4.4</a></b></FONT>
<FONT FACE="Arial,FixedSys"Size=2>

Ich weiß allerdings nicht, was in deinen Zellen als Inhalt steht. Bei mir waren die Zellen leer, enthielten hinterher aber das gewünschte Format.

Gruß Peter

Paddy521
04.05.2009, 17:15
Hallo,
Komisch, genauso isses bei mir auch. Aber bei mir verändert er nach wie vor nur die Zelle in Zeile 3 und die in Zeile 12. Die dazwischen nicht.
Kann das an der Office-Version liegen? Ich hab Office 2007.
Gruß,
Patrick

BoskoBiati
04.05.2009, 17:20
Hallo Patrick,

laß Dir mal den Wert von adr ausgeben.

Paddy521
04.05.2009, 17:36
Hallo,
Ich hab mir jetzt den Wert per MsgBox ausgeben lassen: C3:C12.
Sollte doch eigentlich passen, oder?
Gruß,
Patrick

Paddy521
04.05.2009, 17:40
Jetzt ist mir noch was aufgefallen. Wenn ich nach der Formatierung per Makro bei den Zellen auf formatieren geh, ist das Format zwar auf benutzerdefiniert #,##0,00, aber wenn ich was in die Zelle einfüg wird es nicht in dem Format eingefügt.
Gruß,
Patrick

jinx
04.05.2009, 17:53
Moin, Paddy521,

mein Vorschlag:

Public Sub Test()

Dim i As Integer
Dim rngBigOne As Range

i = 3

Cells(3, i).EntireColumn.Insert
Set rngBigOne = Range(Cells(3, i), Cells(12, i))
rngBigOne.NumberFormat = "#,###0.000"

Set rngBigOne = Nothing

End Sub

Paddy521
04.05.2009, 18:35
Okay, danke. Jetzt hat´s funktioniert.
Grüße,
Patrick