Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
940to944
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
940to944
940to944
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formatierung von Spalten per VBA ?

Formatierung von Spalten per VBA ?
09.01.2008 14:22:59
Spalten
Hallo Leute,
ich habe ein Problem mit unten aufgeführtem Code. Ich möchte per VBA für mehrere Arbeitsblätter die Spalten- und Zellenformatierung vornehmen. Durch das Makro werden leider die Spalten T bis Z alle als "yyyy-mm-dd" formatiert und nicht so wie ich es mit VBA-Recorder (mit kleinen Anpassungen) aufgezeichnet habe.
Was habe ich falsch gemacht ?

Sub Formatierung()
On Error GoTo ErrExit
Application.ScreenUpdating = False           ' "Bildschirmflackern" vermeiden
'Arbeitsblätter markieren
Sheets(Array( _
"Deckenspiegel", _
"Details", _
"Schnitte", _
"Ansichten", _
"Grundrisse", _
"Fassadendetails", _
"Türdetails", _
"Bodendetails", _
"Wanddetails" _
)).Select
For Each wks In ActiveWindow.SelectedSheets
'Formatierung für Spalte W
Columns("W:W").Select
Range("W2").Activate
With Selection
.HorizontalAlignment = xlCenter
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
'Formatierung für Spalte X
Columns("X:X").Select
Range("X2").Activate
Selection.NumberFormat = "@"
'Formatierung für Spalte Y
Columns("Y:Y").Select
Range("Y2").Activate
Selection.NumberFormat = "yyyy-mm-dd"
'Formatierung für Spalten T:Z
Columns("T:Z").Select
Range("T2").Activate
With Selection
.HorizontalAlignment = xlCenter
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
'Formatierung für Zellenbereich T2:Z2
Range("T2:Z2").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 90
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Next
'Arbeitsblätter markieren
Sheets(Array( _
"Deckenspiegel", _
"Details", _
"Schnitte", _
"Ansichten", _
"Grundrisse", _
"Fassadendetails", _
"Türdetails", _
"Bodendetails", _
"Wanddetails" _
)).Select
'Arbeitsblatt markieren und aktivieren
Sheets("Deckenspiegel").Select
Sheets("Deckenspiegel").Activate
Range("A1").Select
ErrExit:
Application.ScreenUpdating = True   'unbedingt wieder einschalten!
End Sub


Vielen Dank im Voraus.
Liebe Grüße,
Selma

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formatierung von Spalten per VBA ?
09.01.2008 17:02:27
Spalten
Hallo Selma,
deinen Quelltext nehme ich mir noch mal vor. Soviel schon mal vorab, das stimmt nicht: Application.ScreenUpdating = True 'unbedingt wieder einschalten! Nach durchlauf des Makros wird ScreenUpdating automatisch wieder auf True gestellt.
Viele Grüße Klaus-Dieter

Online-Excel

AW: Formatierung von Spalten per VBA ?
09.01.2008 18:37:24
Spalten
Hallo Klaus-Dieter,
ich habe Application.ScreenUpdating = True 'unbedingt wieder einschalten! auskommentiert.
Das hat nichts gebracht. Hast du andere Idee ?
Danke !
LG
Selma

Anzeige
AW: Formatierung von Spalten per VBA ?
09.01.2008 20:09:00
Spalten
Hallo Selma,
ich hatte nicht geschrieben, das damit das Problem beseitigt wird. Versuche es mal mit diesem Makro:

Sub Formatierung()
On Error GoTo ErrExit
Application.ScreenUpdating = False           ' Bildschirmaktualisierung aus
Dim wks As Variant
Dim tb As Integer
wks = Array("Deckenspiegel", "Details", "Schnitte", "Ansichten", "Grundrisse", "Fassadendetails" _
, "Türdetails", "Bodendetails", "Wanddetails")
For tb = 1 To 3
With Sheets(wks(tb - 1))
'Formatierung für Spalte W
With Columns("W:W")
.HorizontalAlignment = xlCenter
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
'Formatierung für Spalte X
Range("X:X").NumberFormat = "@"
'Formatierung für Spalte Y
Columns("Y:Y").NumberFormat = "yyyy-mm-dd"
'Formatierung für Spalten T:Z
With Columns("T:Z")
.HorizontalAlignment = xlCenter
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
'Formatierung für Zellenbereich T2:Z2
With Range("T2:Z2")
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 90
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
End With
Next
'Arbeitsblatt markieren und aktivieren
Sheets("Deckenspiegel").Activate
End Sub


Viele Grüße Klaus-Dieter

Online-Excel

Anzeige
Noch was vergessen
09.01.2008 20:11:00
Klaus-Dieter
Hallo Selma,
du musst in der Schleife den Zielwert von 3 auf 9 ändern, sonst werden nicht alle Blätter bearbeitet.
Viele Grüße Klaus-Dieter

Online-Excel

AW: Noch was vergessen
09.01.2008 22:53:51
Selma
Hallo Klaus-Peter,
ich habe es getestet und bei mir läuft das Makro teilweise nur für das aktive Arbeitsblatt.
Anbei die Musterdatei zum Testen: https://www.herber.de/bbs/user/48923.xls
Es kann sein, dass es an verbundenen Zellen innerhalb der Spalten T und Z liegt. Ich würde die gern so wie in der Testdatei beibehalten.
Lg
Selma

Anzeige
AW: Noch was vergessen
09.01.2008 23:04:00
Klaus-Dieter
Hallo Selma,
verbundene Zellen und Überschriften innerhalb einer Liste sind immer von Übel. So etwas sollte man nicht machen. Da funktioniert kein Makro richtig.
Viele Grüße Klaus-Dieter

Online-Excel

AW: Noch was vergessen
09.01.2008 23:18:41
Selma
Hallo Klaus-Dieter,
ich habe in einem Arbeitsblatt alle verbundenen Zellen in Spaltenbereich T:Z normal dargestellt, das Makro funktioniert bei mir nicht.
LG
Selma

AW: Noch was vergessen
10.01.2008 00:42:24
Klaus-Dieter
Hallo Selma,
falls du auf das Datumformat in den Spalten U und V abhebst, die wurden von deinem Makro auch nicht berücksichtigt. Habe das nachgebessert. Ansonsten funktioniert das bei mir einwandfrei.

Sub Formatierung()
'Code von Klaus-Dieter
Application.ScreenUpdating = False           ' Bildschirmaktualisierung aus
Dim wks As Variant
Dim tb As Integer
wks = Array("Deckenspiegel", "Details", "Schnitte", "Ansichten", "Grundrisse", "Fassadendetails" _
_
, "Türdetails", "Bodendetails", "Wanddetails")
For tb = 1 To 9
'Formatierung für Spalte W
With Sheets(wks(tb - 1)).Columns("W:W")
.HorizontalAlignment = xlCenter
.Orientation = 0
.AddIndent = False
'.IndentLevel = 0
.ShrinkToFit = False
'.ReadingOrder = xlContext
End With
'Formatierung für Spalte X
Sheets(wks(tb - 1)).Range("X:X").NumberFormat = "@"
'Formatierung für Spalte Y
Sheets(wks(tb - 1)).Columns("Y:Y").NumberFormat = "yyyy-mm-dd"
'Formatierung für Spalte U und V (zugefügt von Klaus-Dieter)
Sheets(wks(tb - 1)).Columns("U:V").NumberFormat = "yyyy-mm-dd"
'Formatierung für Spalten T:Z
With Sheets(wks(tb - 1)).Columns("T:Z")
.HorizontalAlignment = xlCenter
.Orientation = 0
.AddIndent = False
'.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
'Formatierung für Zellenbereich T2:Z2
With Sheets(wks(tb - 1)).Range("T2:Z2")
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 90
.AddIndent = False
'.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Next tb
'Arbeitsblatt markieren und aktivieren
Sheets("Deckenspiegel").Activate
End Sub


Viele Grüße Klaus-Dieter

Online-Excel

Anzeige
AW: Noch was vergessen
10.01.2008 09:43:00
Selma
Hallo Klaus-Dieter,
vielen Dank, es funktioniert prima.
LG,
Selma

AW: Formatierung von Spalten per VBA ?
09.01.2008 19:35:19
Spalten
Hallo,
ich glaube kaum, dass Screenupdating nach Beendigung einer Sub oder Function automatisch zurückgesetzt wird. Subs können sich auch gegenseitig aufrufen, wenn dann jedesmal die Updatingeinstellung futsch wär, wär das mehr als nervig. Nach Makroende (was immer damit gemeint ist) kann ich mir auch nicht denken.
Auf jeden Fall ist es guter Programmierstil, das ausgeschaltete Updating auch wieder einzuschalten, dann kommen beim Analysieren des Codes auch keine Zweifel auf.
Mit der falschen Formatierung selbst hat das ohnehin nichts zu tun.
Wenn ich das richtig sehe, wird durch das Makro das Zahlenformat gar nicht angefasst. Ich vermute, dass in den betroffenen Spalten auch vorher schon dieses Zahlenformat eingestellt war.
Ich würde daher das Zahlenformat händisch nachschieben oder diesen Part einfach nochmal aufnehmen und hier einfügen.
Anzeige

6 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige