• ベストアンサー

エクセル2003 列の表示、非表示 マクロ

エクセル2003です。 マクロについては初心者以下です。 ワークシートでダブルクリックしたときC列を表示、非表示にするマクロをインターネットで検索してちょっとやって見たのですが、C列だけでなくE、J、M列も表示非表示を同時に行いたい場合は どうすればよいでしょうか? 自動記録も使って見たのですが全部の列が非表示になってしまいだめでした。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Columns("C") .Hidden = Not .Hidden End With End Sub あと、ダブルクリックをセル以外の場所で行ったときに実行するようにできたりするのでしょうか? 今の状態だとデータのあるセルを間違えて変更したり、ダブルクリック後セルを移動しないと再び実行できないので・・ 他によい方法等ありましたら教えて頂きたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • noah7150
  • ベストアンサー率46% (116/251)
回答No.2

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim wHidden As Boolean wHidden = Not Columns("C").Hidden Columns("C").Hidden = wHidden Columns("E").Hidden = wHidden Columns("J").Hidden = wHidden Columns("M").Hidden = wHidden End Sub 他の方法?は Public Sub Kakusu() 先頭1行を上記に変更し 1.Excelシート画面のツーバーで右クリックしフォームのツールバーを表示させる 2.ボタンを選択 3.シートの適当なところで図形を描くように範囲を指定してボタンの大きさを決める 4.マクロ名で該当シート名.Kakusuを選択してOK 以上でボタンを押したときに動作するようになります ユーザーツールバーを作成しそこにコマンドボタンを追加してツールバーにする事も可能。 色んな方法がありますので教本でも購入し便利な物を見つけてください

barnard
質問者

お礼

ありがとうございます。がんばります。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) MsgBox "AAA" Sh.Range("C:C, E:E, J:J, M:M").Select If Selection.EntireColumn.Hidden = True Then Selection.EntireColumn.Hidden = False Else Selection.EntireColumn.Hidden = True End If End Sub ーー テストして ダブルクリックで$列非表示 もう一度ダブルクリックで非表示の4列表示 になりました。 ーー Rangeの問題 複数数列指定 表示非表示のTRUE・FALSE など初心者には難しかろう。 習い覚えるほか無い。 マクロの記録で、そこそこ判ることさえ、思い付かない状態ではね。 CTRLを押して複数列指定し、書式ー列ー非表示。これはエクセル操作の問題でVBA学習以前に、エクセルも学習必要がありそう。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

マクロ使うより「データ」「グループとアウトラインの作成」の 「グループ化」を使えば良いのでは? C列のセルを選択して「グループ化」 E列のセルを選択して「グループ化」 J列のセルを選択して「グループ化」 M列のセルを選択して「グループ化」 で列番号の上に出る[1][2][+][-]のボタンで各列の表示/非表示を切り替えできます。

barnard
質問者

お礼

ごもっともです。