EXCEL VBA: Ändern Sie die Zahlenformatierung basierend auf dem Wert einer anderen Zelle

EXCEL VBA: Ändern Sie die Zahlenformatierung basierend auf dem Wert einer anderen Zelle

Ich möchte die Formatierung eines Zellbereichs C7:K35basierend auf dem Wert in „Zelle“ ändern A1.

Wenn A1= 1, sollte das Zahlenformat sein"_-* #,##0_-;-* #,##0_-;_-* ""-""??_-;_-@_-"

Wenn A1<> 1, sollte das Zahlenformat"_-$* #,##0_-;-$* #,##0_-;_-$* ""-""??_-;_-@_-"

Ich weiß, dass dies in VBA erfolgen muss case, da ich dies bereits zuvor getan habe, als ich in einem anderen Forum eine Frage gestellt habe, aber ich kann die Frage nicht mehr finden.

Ich vermute, es wäre ungefähr so:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("A1")) Is Nothing Then
       case when Range("A1").value = 1 then
       Range("C7:K32").Select
       Selection.NumberFormat = "_-* #,##0_-;-* #,##0_-;_-* ""-""??_-;_-@_-"
       Else
       Range("C7:K32").Select
       Selection.NumberFormat = "_-$* #,##0_-;-$* #,##0_-;_-$* ""-""??_-;_-@_-"
    End If

End Sub

Antwort1

SelectAußer der Aussage ist nichts weiter nötig Select Case.

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("A1")) Is Nothing Then
       select case Range("A1").value
           case 1
               Range("C7:K32").NumberFormat = "_-* #,##0_-;-* #,##0_-;_-* ""-""??_-;_-@_-"
           case Else
               Range("C7:K32").NumberFormat = "_-$* #,##0_-;-$* #,##0_-;_-$* ""-""??_-;_-@_-"
        end select
    End If

End Sub

verwandte Informationen