EXCEL VBA: cambie el formato de NÚMERO según el valor de otra celda

EXCEL VBA: cambie el formato de NÚMERO según el valor de otra celda

Quiero cambiar el formato de un rango de celdas C7:K35según el valor de Cell A1.

Cuando A1= 1 el formato del número debe ser"_-* #,##0_-;-* #,##0_-;_-* ""-""??_-;_-@_-"

Cuando A1<> 1 el formato del número debe ser"_-$* #,##0_-;-$* #,##0_-;_-$* ""-""??_-;_-@_-"

Sé que esto deberá hacerse en VBA usando case, como lo hice antes cuando pregunté en un foro diferente, pero ya no puedo encontrar la pregunta.

Supongo que sería algo como esto:

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

Respuesta1

No es necesario Selectnada excepto la Select Casedeclaración.

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

información relacionada