- ベストアンサー
エクセルのマクロについて教えてください
エクセルのマクロで教えてほしいのですが、たとえば、指定した範囲の中でK列の値が"1”のとき、列F~Kの値をクリアするマクロはどう組めばよいでしょうか? 逆に、指定した範囲の中でK列の値が"1”以外のとき、列F~Kの値をクリアするマクロもどう組めばよいでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
下記の不明点を補足のこと。 >指定した範囲の中 どういう流れの中でセル範囲が決まるのか。 指定した範囲にK列があるか? 何行何列の可能性があるのか。 Sub test01() 'Set x1 = Range("A1:L4") Set x1 = Range("A1:J4") If Application.Intersect(x1, Range("K1")) Is Nothing Then MsgBox "K列含まない" Else MsgBox "K列含む" End If End Sub >K列の値1かいいか? この表現がおかしいだろう。 AK2が1か?とか BK列のどこかのセルに1のセル(行)があるか? C指定した範囲が1行で、そのK列の値が1か? どちら? Bの場合の1例 Sub test02() Worksheets("Sheet1").Range("K2:K10").Select '最下行10と仮定。不定ならEnd(xlup)・Rowで検知. Set Z = Selection.Find(What:=1) If Z Is Nothing Then MsgBox "1の行なし。" Else MsgBox Z.Row End If End Sub 指定した範囲の決まり方で、コードの難易度が変わるよ。 質問者には今見ていて、とか先ほどから関心事でも、読者には文章ではっきり説明しないとわからないのはわかるだろう。そういう想像性こそ、プログラムを組むうえで必要な能力です。 ーー >列F~Kの値をクリアするマクロもどう組めばよいでしょうか? 行範囲はどうなる。その列の、全行データの最終行までか。 Googleででも「エクセルVBA 列データをクリア」で照会したら。 http://www.tipsfound.com/VBA/09008.VBHTMLなど多数。 見出し行がK1,K2にあるケースであれば http://excelvba.pc-users.net/fol2/2_6.html ーー 質問者は初心者らしいが、FindやIntersectを使うのは中級以上と思う。 VBAの最少限必要な点を勉強せずに、VBAの(それも仕事?の)課題に取り掛かろうとしてないか。
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
「指定した範囲」って具体的にどう指定したいのか不明ですが。 sub macro1() dim h as range on error resume next for each h in application.intersect(selection.entirerow, range("K:K")) if cells(h.row, "K") = 1 then ’または <>1 then cells(h.row, "F").resize(1, 6).clearcontents end if next end sub 指定したい行(範囲)を選択して指定(列はどこでもよい)、マクロを実行する。