【Excel/VBA のこと 25】
こんな感じの表を使っています。
列Aの基準となるデータと各列のデータを目視で確認しているのです。
列C、Dくらいまでなら、あまり問題ないのですが、
それ以上先になると、確認しなければいけない行がずれてしまいます。
このような作業は、比較するものを隣同士に並べれば楽ちんです。
つまり、基準列と比較列以外の列を非表示にしてしまいます。
そして、私は、再表示もすぐにできる グループ化の方を好みます。
外観
こんな感じ。
チェックボックス
コマンドボタン
オプションボタン x 6
列の項目名の表示にオプションボタンを使いましたが、
リストボックスとかラベルでも良いかもしれません。
私が、実際に使用しているテーブルは40列くらいあります。
マクロ
'モジュールレベル変数です。Column No の略
Dim ColNo As Long
コマンドボタン(キャンセルボタン)
Private Sub cmdCancel_Click()
End
End Sub
オプションボタン1
Private Sub op1_Click()
ColNo = 2 '列Aは基準列なので、+1します
Call MoveToColumn 'メインのマクロを呼び出します
End Sub
オプションボタン2
Private Sub op2_Click()
ColNo = 3
Call MoveToColumn
End Sub
オプションボタン3
Private Sub op3_Click()
ColNo = 4
Call MoveToColumn
End Sub
オプションボタン4
Private Sub op4_Click()
ColNo = 5
Call MoveToColumn
End Sub
オプションボタン5
Private Sub op5_Click()
ColNo = 6
Call MoveToColumn
End Sub
オプションボタン6
Private Sub op6_Click()
ColNo = 7
Call MoveToColumn
End Sub
指定列選択、それ以外は非表示にする
Sub MoveToColumn()
Dim r As Long '行番号を格納します(Row)
Dim c As Long '列番号を格納します(Column)
Dim LastC As Long '最終列を格納します
'グループ化を解除します
'グループ化でないときに実行してもエラーになりません
Columns.ClearOutline
r = Selection.Row '行番号を取得する
Cells(r, ColNo).Select '列番号を取得する
LastC = Cells(1, Columns.Count).End(xlToLeft).Column '最終列を取得する
For c = 2 To 8
If chHidCol = True Then 'もしチェックボックスが入っていたら・・・
If c <> ColNo Then 'もし指定の列でなければ・・・
Columns(c).Group 'その列をグループ化にする
End If
Else 'チェックが入っていなければカーソルだけ移動する
Cells(r, ColNo).Select
End If
Next c
'このコードでグループ化した列を閉じます
'最後の数字を「2」にすると開きます
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
Unload frmSelectColumn 'フォームを閉じます
End Sub
フォーム初期化
Private Sub UserForm_Initialize()
'グループ化を解除します
'グループ化になっていないときに実行してもエラーになりません
Columns.ClearOutline
End Sub
標準モジュール
Sub 列選択()
frmSelectColumn.Show
End Sub
**********************************************************
このツール、マクロは特殊な作業用なので、リボンに登録せず
その作業をするExcelに直接作成しました。
シート上にボタンを設置
列選択ボタン・・・フォームを起動させます
グループ化を解除ボタン・・・グループ化を解除します フォームは起動しません
列をグループ化するマクロですが、行をグループ化する場合も
おなじ要領で作成できるはずです。
**********************************************************
個人用マクロブックについてはこちら
リボンに登録についてはこちら
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/