- ベストアンサー
VBAで線を描画
ユーザフォーム上の2箇所のテキストボックスに始点、終点としてそれぞれ数字を入れるとワークシート上のあるセル(始点)からあるセル(終点)まで色をつける、もしくは線を引くということはできますでしょうか?すいませんがよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ワークシート上にコントロールの(図形の)直線を書くことは比較的易しい。 始点は下記でセルB2、終点はD5として セルの始点B2の右端辺の中間、終点D5の左端辺の中間 Sub test01() X1 = Cells(2, "B").Left + Cells(2, "B").Width Y1 = Cells(2, "B").Top + Cells(2, "B").Height / 2 X2 = Cells(5, "D").Left Y2 = Cells(5, "D").Top + Cells(5, "D").Height / 2 Worksheets("Sheet1").Shapes.AddLine X2, Y2, X1, Y1 End Sub のようなコードを参考にして考えるとできるでしょう。 色をつけるのは Sub test01() X1 = Cells(2, "B").Left + Cells(2, "B").Width Y1 = Cells(2, "B").Top + Cells(2, "B").Height / 2 X2 = Cells(5, "D").Left Y2 = Cells(5, "D").Top + Cells(5, "D").Height / 2 Worksheets("Sheet1").Shapes.AddLine(X2, Y2, X1, Y1).Select Selection.ShapeRange.Line.ForeColor.SchemeColor = 10 End Sub しかしエクセルVBAでユーザーフォームに線を描くことは結構難しいと思う。 直線は使えるコントロールとして提供されていないために。 WEBで「UserForm 線を描く」で照会してみてください http://www.keep-on.com/excelyou/2001lng4/200105/01050014.txt のようにAPIを使わないと出来ないのではないでしょうか。 VBAでAPIを使わないと出来ない課題は、「VBAでは出来ない」と言う範疇だと思いますが。
その他の回答 (1)
- ASIMOV
- ベストアンサー率41% (982/2351)
マクロの記録で適当に「線」を書くと、この↓ようなマクロが出来ます ActiveSheet.Shapes.AddLine(100, 100, 200, 200).Select この 100,100 が始点のXとYです 200,200 が終点のXとYです これを変数にして、テキストボックスから入力すれば出来ます