[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAで列を表示非表示にしたい』(初心者)
あるサイトで、列を非表示・再表示のマクロがありました。
しかし、1列のみでした。
希望としては複数列をしたいのですが、やり方がわかりません。
どなたか教えていただけますか?
Sub HideShow_Columns()
Dim i As Long
i = 3 '[i]列目を表示/非表示にする
If Columns(i).Hidden = False Then 'もしも[i]列目が表示されていれば Columns(i).Hidden = True '非表示にする Else Columns(i).Hidden = False '表示にする End If
End Sub
複数の場合2つ要望がります
?@ C列からE列を非表示・再表示
?A F列からG列、J列からM列を非表示・再表示
よろしくお願いいたします。
< 使用 Excel:Excel2019、使用 OS:Windows10 >
(2)のほうだけ回答します。(1)も同じようにトライしてみて下さい。 Sub test() Dim k As Long For k = 6 To 13 If k <> 8 And k <> 9 Then Columns(k).Hidden = Not Columns(k).Hidden End If Next End Sub
#なお、丸囲み文字は文字化けするので使用しないで下さい。
(xyz) 2024/05/05(日) 22:06:42
Dim k As Long For k = 9 To 29 If k <> 11 And k <> 12 Then Columns(k).Hidden = Not Columns(k).Hidden End If Next End Sub 上記内容を マクロボタン1に指定して使用できました。 しかし、 マクロボタン2に下記内容を設定するとエラーが生じます。なぜでしょうか・・・ Sub 栄養() Dim k As Long For k = 9 To 29 If k <> 13 And k <> 14 Then Columns(k).Hidden = Not Columns(k).Hidden End If Next (初心者) 2024/05/05(日) 22:41:31
Dim k As Long For k = 9 To 29 If k <> 11 And k <> 12 Then Columns(k).Hidden = Not Columns(k).Hidden End If Next End Sub
モジュール2に
Sub 栄養()
Dim k As Long For k = 9 To 29 If k <> 13 And k <> 14 Then Columns(k).Hidden = Not Columns(k).Hidden End If Next End Sub
入れれたらエラーは無くなったんですが、ボタンが反応しません。
教えていただけないでしょうか?
(初心者) 2024/05/05(日) 22:47:36
Sub 栄養() Dim k As Long Stop '仮に入れておく For k = 9 To 29 '以下略 として、途中で止まるか確認して下さい。 とまらないなら、マクロの登録がうまくいっていないということです。 もう一度操作を確認して下さい。
(xyz) 2024/05/05(日) 22:57:06
ちなみに、それらの列の表示非表示はすべて同じなら、 Columns("I:L").Hidden = Not Columns("I:L").Hidden のような書き方をすればよく、一列ずつ繰り返す必要はありません。 (xyz) 2024/05/05(日) 23:01:25
列は、異なりますが非表示・表示するのは同じです。
1列ずつ繰り返す必要がないとは、どういうことでしょうか?
教えていただけますか・・・
(初心者) 2024/05/05(日) 23:05:19
・それらのマクロは標準モジュールに書いてあり、 ・フォームコントロールのコマンドボタンに登録したのですね? それなら動作するはずです。 マクロのボタンへの登録は基本的なことなので、テキストを参照しながら、よく確認して下さい。
質問事項についてですが、 (1) Columns("I:L").Hidden = Not Columns("I:L").Hidden (2) Dim k For k = 9 To 12 Columns(k).Hidden = Not Columns(k).Hidden Next は、まったく同じ動作をするということです。
ただし、そもそも例えばI列とJ列の表示状態が異なるという状態から出発するなら、結果は違ってきます。 ・4列とも同じ状態にして、反転させるなら(1)のようにする必要があります。 ・各列ごとに表示非表示を反転するなら (2)のようにする必要があります。
以上とさせてください。
(xyz) 2024/05/05(日) 23:17:30
> (2)F列からG列、J列からM列を非表示・再表示
全ての列の表示状態がすべて同じ場合
Sub Test1() With Range("F:G,J:M").Columns .Hidden = Not .Hidden End With End Sub
列の表示状態がそれぞれ異なるとき
Sub Test2() Dim col As Range For Each col In Range("F:G,J:M").Columns col.Hidden = Not col.Hidden Next End Sub
(hatena) 2024/05/06(月) 00:16:51
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.