EXCEL VBA: Altere a formatação de NUMBER com base no valor de outra célula

EXCEL VBA: Altere a formatação de NUMBER com base no valor de outra célula

Quero alterar a formatação de um intervalo de células C7:K35com base no valor em Cell A1.

Quando A1= 1 o formato do número deve ser"_-* #,##0_-;-* #,##0_-;_-* ""-""??_-;_-@_-"

Quando A1<> 1 o formato do número deve ser"_-$* #,##0_-;-$* #,##0_-;_-$* ""-""??_-;_-@_-"

Eu sei que isso precisará ser feito em VBA usando case, como já fiz antes ao perguntar em um fórum diferente, mas não consigo mais encontrar a pergunta.

Estou supondo que seria algo assim:

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

Responder1

Não há necessidade de Selectnada, exceto a Select Casedeclaração.

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

informação relacionada