2

ワークシートなどの特定のセルに格納されている値に基づいて、A1列 B から始まるワークシートのいくつかの列を非表示にしたいと考えています。

私がやろうとしていることの例:

  • セル A1 の値 = 10 の場合、列 B と B の後の 10 列を非表示にします。
  • セル A2 の値 = 11 の場合、列 B と B の後の 11 列を非表示にします。

問題は、実際には、Excel (または少なくとも私の Excel ファイル) が列の名前にアルファベット (A、B、...) を使用する方法です。コードのようなrows("2:" & range("A1").value)およびセットを使用する前に、行でこれを行いました.hide = true

4

3 に答える 3

3

上記の Glenn の回答にコメントを追加したかったのですが、十分な評判がありません。私が追加しようとしていたのは、シートをアクティブにしたり、列を選択したりする必要がないということでした。単に先に進んで列を非表示にすることができます。

Worksheets("TheSheet").Columns(2).Resize(, numColumnsToHide).EntireColumn.Hidden = True
于 2013-02-25T12:04:58.820 に答える
2

インデックス番号などで列を参照できます。また、選択する列の数を次のように設定するためにColumns(indexnumber)使用できます。Resize()

Sub HideColumns()
    Dim numColumnsToHide

    numColumnsToHide = Cells(1, 1).Value

    Columns(2).Resize(, numColumnsToHide).Select

    Selection.EntireColumn.Hidden = True
End Sub

明らかに、このコードには の値の検証がないA1ため、誰かがHideColumns()の整数なしで実行するとA1、悪いことが起こります。これにより、非表示の列も再表示されません。

于 2013-02-24T04:57:22.857 に答える