EXCEL VBA: 別のセルの値に基づいて数値の書式を変更する

EXCEL VBA: 別のセルの値に基づいて数値の書式を変更する

C7:K35Cell の値に基づいてセル範囲の書式を変更したいと思いますA1

= 1の場合、A1数値の形式は次のようになります。"_-* #,##0_-;-* #,##0_-;_-* ""-""??_-;_-@_-"

<> 1の場合、A1数値の形式は次のようになります。"_-$* #,##0_-;-$* #,##0_-;_-$* ""-""??_-;_-@_-"

以前別のフォーラムで質問したときにこれを行ったことがあるため、これを実行するには VBA を使用して実行する必要があることはわかっていますcaseが、その質問がもう見つかりません。

おそらく次のような感じになると思います:

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

答え1

Select声明以外は何も必要ありません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

関連情報