[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAで文字や数字が入った時だけ列だけ表示』(take)
列 B C J K L U
5 1日 木
6 2日 金
7 3日 土
8 4日 日
9 5日 月
10 6日 火
11 7日 水
12 8日 木
35 31日 土
このように表を作った時、表をくずさないでJ・K・Lに文字や数字が入った時だけ列5・7・10・・・だけ表示
J・K・Lに文字や数字が入ていなかったら(6・8・9・11・12・・・)非表示を
マクロ(VBA)を使って出したいのですが教えてくれませんか?
それと一度マクロ(VBA)を起動してから、また戻すマクロ(VBA)も教えて欲しいです。
あまりマクロ(VBA)をしりませんがお願いします。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
あげあしをとるようで心苦しいのですが、アップされた表が【くずれていて】どこに何が入っているのかわかりにくいです。 何列に何がはいっているかわかるようにしてもらえませんか?
それと、「列5・7・10・・・」とは 「行5・7・10・・・」のことでしょうか?
あと、「一度マクロ(VBA)を起動してから、また戻すマクロ」 これは、どういう状態に戻すのですか? 未入力の状態に戻すということですか? それとも、全行を表示させるという意味ですか?
どうも、よくわからないのですが、矛盾ないですか? どこかに入力がなければ非表示にする? そうなってしまうと、そのあと、そこに何かいれようとしても、非表示だから入力できませんよね?
(β) 2015/01/24(土) 21:21
35
「表をくずさないで」とは行5〜35の罫線はそのまま
列B〜U 行5〜35です
先に列Jに数字が入っている時で後からマクロ起動して、列Jに数字が無い行は非表示する。
「一度マクロを起動してから、また戻す」とは全行を表示させるという意味です。
本当にわかりにくくてごめんなさい。
(take) 2015/01/24(土) 22:01
処理をするタイミングのイメージがわかりませんが、とりあえず一括処理で。 一括処理なら、4行目をタイトル行にしておいてオートフィルタを使えばいいのでは?とも思いますが) また、罫線をくずさないという意味が、この表の全体の外枠が太線で、仮に、35行目が非表示になっても一番下は太線 ということだと、やっかいですが。
Sub 非表示() Dim c As Range
For Each c In Range("A5:A35") If WorksheetFunction.CountA(c.EntireRow.Range("J1:L1")) = 0 Then c.EntireRow.Hidden = True Next
End Sub
Sub 全表示() Range("A5:A35").EntireRow.Hidden = False End Sub
(β) 2015/01/24(土) 22:18
毎度、ありがとうございました。
欲を言えば非表示にした時も31行(表示3行、非表示28行)なんて都合のよい事は出来ないですね?
もしあればお願いします。
(take) 2015/01/24(土) 22:53
こんなことですか?
Sub 非表示2() Dim c As Range
For Each c In Range("A5:A35") If WorksheetFunction.CountA(c.EntireRow.Range("J1:L1")) = 0 Then c.EntireRow.Font.Color = vbWhite Next
End Sub
Sub 全表示2() Range("A5:A35").EntireRow.Font.ColorIndex = xlAutomatic End Sub
(β) 2015/01/24(土) 23:13
Sub 非表示() Dim c As Range
For Each c In Range("A5:A35") If WorksheetFunction.CountA(c.EntireRow.Range("J1:L1")) = 0 Then c.EntireRow.Hidden = True Next
End Sub
Sub 全表示() Range("A5:A35").EntireRow.Hidden = False End Sub
を使わせてもらいます。
計算式などシート保護した時はやっぱり解除が必要ですか?
(take) 2015/01/24(土) 23:40
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.