0

名前付きセル範囲の値を調べ、その名前付きセルの値に基づいてセルを非表示/再表示するマクロを作成したいと思います。(a)はいおよび(b)いいえから選択できるデータ検証済みリストがあります。ユーザーが名前付きセル「選択」(セル「A1」)を選択した場合、(a)はい、行5〜10を非表示にする必要があります、それ以外の場合は、非表示にする必要があります。「(a)はい」のように、マクロはセル全体の値を確認する必要はありません。「(a)」のみを確認する必要があります。

これはこれまでの私のコードですが、次のようなエラーが発生します

オブジェクト変数またはWithブロック変数が設定されていません

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Cell As Range

Cell = Range("Select")

If Target.Address = Cell Then
    Select Case Left$(Cell.Value, 3)
        Case "(a)"
            Rows("5:10").Hidden = True
    End Select
Else 
    Rows ("5:10").Hidden = False
End If
End Sub

このようなことをどのように行うでしょうか?

4

1 に答える 1

1

以下を変更します。

Cell = Range("Select")

の中へ:

Set Cell = Range("Select")

さらに、以下を比較すると、期待した結果が得られません。

Target.Address = Cell

決して満たされることはありません。次のことを試してください。

Target.Address = Cell.Address

そしてもう1つの提案。条件の両方を1つに組み合わせることができますifselect

If Target.Address = Cell.Address And Left$(Cell.Value, 3) = "(a)" Then

最後に、VBAでは大文字と小文字が区別されるため、「(a)」<>「(A)」であることを忘れないでください。

于 2013-03-25T09:17:44.307 に答える