1

ドロップダウンのオプションに基づいて非表示の列を表示しようとしています。1行の場合は正常に機能しますが、範囲を10行に拡張したい場合

If Range("$CF$5: $CF$15") = "Others" Then

Tt が表示されますRuntime error 13.

以下は私のコードです。助けてくれてありがとう。

If Range("$CF$5") = "Others" Then
    ActiveSheet.Columns("CG").EntireColumn.Hidden = False
Else
    ActiveSheet.Columns("CG").EntireColumn.Hidden = True
End If 
4

2 に答える 2

2

あなたがやっているように、範囲内の値を比較することはできません。

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
于 2013-10-18T08:31:56.940 に答える
0

これはどう?これは、範囲内の単一のセルが「その他」に設定されている場合は CG 列が表示され、それらが設定されていない場合は CG が非表示になることを前提としています。それがあなたが本当に求めているものかどうかわかりませんか?

Dim cell As Range

For Each cell In Range("$CF$5:$CF$15")

    If cell = "Others" Then
        ActiveSheet.Columns("CG").EntireColumn.Hidden = False
        Exit For
    Else
        ActiveSheet.Columns("CG").EntireColumn.Hidden = True
    End If

Next cell
于 2013-10-18T09:45:04.220 に答える