• 締切済み

エクセルVBAについて

VB初学者です。 この度上司命令にて多少かじり始めました。(今まで完璧な文系人間で生きてきました) 2点伺わせていただきます。 (1) Sub aaa() Range("A1:F10") .select With Selection . . . . End With End Sub この際("A1:F10") に限定せず、このマクロをどのセルにも適応するようにするにはどのようにしたらよろしいのでしょうか。なお、インプットボックスは使わずに、任意のセル(或いはセル範囲)に適応させることは可能なのでしょうか。 (2) A列に文字が入力されているセルと空白セルが混在しているとします。 A列を参照して空白の場合、同行のB列に何らかの記号を出力する処理場合のコード (A列が空白でない場合B列には何も出力しない) どなた様かご教示いただけますと大変助かります。 よろしくお願いいたします。

みんなの回答

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

(1) Sub aaa() With Selection .'処理 .End With End Sub とすれば、実行したとき、アクチブシートの現在選択しているセル、セル範囲、オブジェクトなどが処理対照に出来ます。 自分でこのコードを知っていて、注意して使えば使えるようですが、危険というか、不安というか、不安定なコードです。 何処が何が選択されて居るかは、やはり、自覚できるようにすべきです。 それでこれはあまりすすめられない。 Inputboxには、マウスでセル範囲を選択する方法もあり、それを使うべきと思います。 処理の内容にもよるでしょうが。 ーーー 色々なコードが考えられる。 (1)一番自然(思いつきやすい)なのは、A列のセルを上から下まで読んで、空白かどうか判別し、空白ならB列に記号を出せば良い。 この方法のコードもわからないようでは、VBAをもう少し勉強してから質問するレベルです。VBAの解説書でも読みましょう。 (2)普通のエクセル関数で、B列に記号を出せるでしょう。 それをそのまま式をB列に埋め込む手もあります。 Sub test01() Range("B1:B10") = "=IF(A1="""",""& "","""")" End Sub http://officetanaka.net/excel/vba/tips/tips90.htmのような智識ほか数点の智識が必要です。 個人的にはこの方法を多用すると、関数をやっているようで、VBAの訓練にならないと思うが。 ==== >かじり始めました 思いつきでコードを作り、テストする前に、教科書的な解説書を読んで、どういうことがドレで出来るか頭に入れてからにすべきです。 「学びて思わざれば、すなわち罔(くら)し。思いて学ばざれば、すなわち殆(あやう)し。」(論語) はっきり割り切るとVBAも暗記物の気があるように思う。 === マクロの記録を活用すること。

すると、全ての回答が全文表示されます。
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 (1)Range("A1:F10") .selectを削除すれば、マウスで任意選択した範囲で処理ができるが如何でしょうか。 (2)サンプルコード    For i = 1 To Cells(Rows.Count,”A").End(Xlup).Row     If Cells(i,"A") = "" Then       Cells(i,"B").Value = "記号"     Endif    Next

すると、全ての回答が全文表示されます。

関連するQ&A