2016-05-23 4 views
1

私は100列のシートを持っており、クリックされたボタン(フォームコントロール)に基づいて特定の列のみを表示したい。ボタン名を参照してVBAが非表示にする列を知っているようにする

ボタン名のマトリックスと、対応する列が別々のシートに表示される必要があります。

私はクリックされたボタンを識別し、参照シート上の対応するセルを見つけるためにボタン名を使用し、隠すべき各列をループして列を隠す必要があると思います。 「バリアンス」という名前のボタンがクリックされた場合

例えば、私は分散の行を参照すると示した列

1,2,3,4,5,6,16![マトリックスは、ボタンを示します名前と列を隠す] https://drive.google.com/open?id=0B-gDxLsmXP_IWmVHZVlCa005a0U

私は各ボタンに静的にコード化できましたが、VBAコードを変更することなくボタンを追加できるようにしたいと考えています。どんな助けもありがとう。ありがとう!

  • サム
+0

ボタンの名前でfindまたはapplication.Matchを実行し、インデックス番号を使用して他のシートの列を隠す列を繰り返します。 –

+0

クリック時に 'case'文を実行しますか? – findwindow

+1

ボタンがワークシート上にある場合、 'Application.Caller'はクリックされたボタンの名前を与えます:すべてのボタンのOnActionプロパティが同じSubを指すように設定します。 –

答えて

0

下の画像は、私のExcelシートのためのセットアップを示しています。

Excel Setup

ティム・ウィリアムズは、両方のボタンがハンドラを呼び出し、示唆したように。

Sub Handler() 

Dim row, column As Integer 
Dim button As String 

    button = Application.Caller 
    For i = 2 To 3 
     If Cells(i, 6).Value = button Then 
      row = i 
     End If 
    Next 
    For j = 7 To 8 
     column = Cells(row, j).Value 
     columns(column).EntireColumn.Hidden = True 
    Next 

End Sub 
+0

セットアップを複製しましたか?また、VBAは大文字と小文字が区別されるので、 'button = Application.Caller'とする必要があります。 – bwyn

+0

シートとコードを複製して、アプリケーション定義またはオブジェクト定義の実行時に 'line = (row、j).Value ' –

+0

rowとjの値は何ですか? – bwyn

関連する問題