あなたがやっているように、範囲内の値を比較することはできません。
If Range("$CF$5: $CF$15") = "Others"
比較を行う方法はたくさんあります。範囲をループするのが最も一般的な方法です。以下は、垂直範囲内のすべてのセルが同じ値を持っているかどうかを確認する別の方法です。
これはあなたがしようとしていることですか?
Sub Sample()
Dim ws As Worksheet
Dim rng As Range
'~~> Set your worksheet here
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
'~~> Set your range here
Set rng = .Range("CF5:CF15")
'~~> Check if any cell in the range have "Others"
If Application.WorksheetFunction.CountIf(rng, "Others") = _
rng.Rows.Count Then
.Columns("CG").EntireColumn.Hidden = False
Else
.Columns("CG").EntireColumn.Hidden = True
End If
End With
End Sub
編集:
また、「その他」のインスタンスが 1 つでも列を表示/非表示にしたい場合は、ループも必要ありません。これを参照してください。
Sub Sample()
Dim ws As Worksheet
Dim rng As Range
'~~> Set your worksheet here
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
'~~> Set your range here
Set rng = .Range("CF5:CF15")
'~~> Check if all the cells in the range have "Others"
If Application.WorksheetFunction.CountIf(rng, "Others") > 0 Then
.Columns("CG").EntireColumn.Hidden = False
Else
.Columns("CG").EntireColumn.Hidden = True
End If
End With
End Sub