Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1336to1340
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

Spalten formatieren VBA

Spalten formatieren VBA
08.11.2013 10:03:49
Peter
Hallo Excelfreunde
Ich möchte über VBA bei diversen, teilw. nicht zusammenhängenden Spalten je nach Auswahl im Dropdownmenü die Währung umformatieren. Dazu habe ich folgenden Code geschrieben:
Private Sub waehrung_Change()
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim ber, ber2, ber3, ber4, ber5, ber6, ber7, Waehrung, cell As Range
Dim ende As Long
With Worksheets("Kalkulation")
ende = .Cells(Rows.Count, 1).End(xlUp).Row
End With
Set Waehrung = Worksheets("Eingabe").Range("d2")
Set ber = Worksheets("Kalkulation").Range("p6:p" & ende)
Set ber2 = Worksheets("Kalkulation").Range("r6:r" & ende)
Set ber3 = Worksheets("Kalkulation").Range("t6:y" & ende)
Set ber4 = Worksheets("Kalkulation").Range("ab6:ag" & ende)
Set ber5 = Worksheets("Kalkulation").Range("ax6:bd" & ende)
Set ber6 = Worksheets("Kalkulation").Range("bg6:bg" & ende)
Set ber7 = Worksheets("Kalkulation").Range("bo6:bo" & ende)
Set alleber = Union(ber, ber2, ber3, ber4, ber5, ber6, ber7)
For Each cell In alleber
If Waehrung.Value = "CHF" Then
cell.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""?_);_(@_)"
End If
If Waehrung.Value = "EUR" Then
cell.NumberFormat = "#,##0.00 [$€-407];-#,##0.00 [$€-407]"
End If
Next
MsgBox "Währung ist umgestellt!"
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Der Code funktioniert auch einwandfrei. Allerdings läuft das Ganze ziemlich lange. Habt Ihr mir ev. einen Tipp, wie man die Performance noch deutlich steigern könnte? Wahrscheinlich kann der Code auch noch um einiges optimiert werden.
Für Eure Hilfe danke ich Euch bestens.
Lieber Gruss
Peter

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten formatieren VBA
08.11.2013 10:24:25
hary
Moin Peter
Mal ungetestet.
Private Sub waehrung_Change()
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim ber, ber2, ber3, ber4, ber5, ber6, ber7, Waehrung, cell As Range
Dim ende As Long
With Worksheets("Kalkulation")
ende = .Cells(.Rows.Count, 1).End(xlUp).Row
Set Waehrung = Worksheets("Eingabe").Range("d2")
Set ber = .Range("p6:p" & ende)
Set ber2 = .Range("r6:r" & ende)
Set ber3 = .Range("t6:y" & ende)
Set ber4 = .Range("ab6:ag" & ende)
Set ber5 = .Range("ax6:bd" & ende)
Set ber6 = .Range("bg6:bg" & ende)
Set ber7 = .Range("bo6:bo" & ende)
Set alleber = Union(ber, ber2, ber3, ber4, ber5, ber6, ber7)
End With
Select Case Waehrung
Case "CHF"
alleber.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""?_);_(@_)"
Case "EUR"
alleber.NumberFormat = "#,##0.00 [$€-407];-#,##0.00 [$€-407]"
End If
End Select
MsgBox "Währung ist umgestellt!"
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

gruss hary

Anzeige
AW: Spalten formatieren VBA
08.11.2013 10:42:09
Peter
Hallo Hary
Die Umstellung auf Select Case hats gebracht. Unglaublich wie das Ganze jetzt schnell läuft. Vielen herzlichen Dank an Dich und natürlich auch an Rudi.
Lieber Gruss
Peter

AW: Spalten formatieren VBA
08.11.2013 10:24:30
Rudi
Hallo,
warum formatierst du jede Zelle einzeln?
        If Waehrung.Value = "CHF" Then
alleBer.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""?_);_(@_)"
End If
If Waehrung.Value = "EUR" Then
alleBer.NumberFormat = "#,##0.00 [$€-407];-#,##0.00 [$€-407]"
End If

Gruß
Rudi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige