0

リスト内のシート名を提供する動的な名前付き範囲があります (A2 = オーストリア、A3 = ドイツ、A4 = ポーランドとしましょう) このリストはユーザーによってサイズが異なる可能性があるため、キャプチャする名前付き範囲にオフセットがあります列 A のすべてのセルに名前が含まれています。

IF ステートメントを使用して、この名前付き範囲に基づいて特定のシートを非常に非表示にしたいと考えています。

何かのようなもの:

Public Sub test()
    Sheets(Array(Range("MyRange"))).Visible = xlVeryHidden
End Sub

上記を使用すると、次のエラーが表示されます: 実行時エラー '13': タイプの不一致

提案をお願いします。

ありがとうポール

4

3 に答える 3

1

Sheets は引数として名前の配列を取ることができず、Sheets(index) として宣言されているため、残念ながら名前をループしてシートを 1 つずつ非表示にする必要があります。

試す:

Sub test()
    Dim rngCell As Range
    For Each rngCell In Range("MyRange")
        Sheets(rngCell.Value).Visible = xlSheetVeryHidden
    Next rngCell
End Sub
于 2011-02-01T11:13:55.133 に答える
1

名前付き範囲をループするだけです

Sub Test()
dim oCell as range
for each oCell in Range("MyRange)
Sheets(oCell.value).visible=xlVeryHidden
next oCell
end sub
于 2011-02-01T11:14:12.763 に答える
0

配列を Sheets() に渡すことができますが、垂直方向の範囲から配列を取得する場合は、最初に転置する必要があります。

これは私のために働く:

ThisWorkbook.Sheets(Application.Transpose(Sheet3.Range("SHEETS").Value)).Visible = _ xlSheetHidden

SHEETS には値「Sheet1」と「Sheet2」が含まれます。残念ながら、何らかの理由で xlSheetHidden でのみ動作し、xlSheetVeryHidden では動作しないようです ....

ティム

于 2011-02-02T07:01:14.800 に答える