• ベストアンサー

EXCEL2010のVBAでの図形描画について

EXCEL2010にて以下を使用して、一定の位置から指定した長さの直線(コネクタ)を引きたいと考えています。(AからZに向かう方向の水平な線です) ActiveSheet.Shapes.AddConnector(msoConnectorStraight, 始点1, 始点2, 終点1, 終点2).Select セルの高さ・幅を一定にして、セルを基準に線を引こうと思い、数値を入れてみると、高さの位置はセルの高さの数値(ポイント)を利用して決められました。 しかし、同様の方法だと横方向の位置(今回の場合は長さ)がセルの幅の数値と一致しません。 セルの幅に係数をかけるような処理が必要かと思いますが、その係数が分かりません。 どのようにしたらよろしいでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

指定のセルから直接座標を読み取ってみます。 sub macro1() with range("C3:Z3") activesheet.shapes.addconnector msoconnectorstraight,.left, .top + .height / 2, .left + .width, .top + .height / 2 end with end sub 理屈を理解すれば、例えば「A1セルの左辺中央」から「Z1セルの右辺中央」(~=AA1セルの左辺中央)までなどのように座標を拾っても、勿論構いません。

zenithcooler
質問者

お礼

回答ありがとうございます。 やはりセルのTopやLeftを基準にしたほうがいいみたいですね。ありがとうございました。

関連するQ&A

  • VBAで線を描画

    ユーザフォーム上の2箇所のテキストボックスに始点、終点としてそれぞれ数字を入れるとワークシート上のあるセル(始点)からあるセル(終点)まで色をつける、もしくは線を引くということはできますでしょうか?すいませんがよろしくお願いいたします。

  • Excel2002 図形描画について

    図形描画の直線ツールを使って、1本だけ線を引き、それをコピー&ペーストしたいのですが、任意の場所にペーストすることが出来ません。 ペーストしたいあたりのセルを選択してからペーストすると、画面からはみ出る程、はるか遠く(右下の方向)のセルにペーストされてしまいます。同じ長さの線を同じ間隔で、各行に引きたいと思っているのですが・・・。 何か設定などあるのでしょうか?わかる方いらっしゃいましたら、教えて下さい。

  • EXCEL VBA これであっていますか?

    エクセルに地図を貼り付け、その中のある地点Aから半径1キロ、2キロ、3キロといった具合に円を描いています。ある地点B、Cも同様に円があります。セルに“A” と入力した際に該当する地点の円(1キロ、2キロ、3キロの3種類)を赤く表示し、終了すると円が消える(線なしに変わる)ようにするために以下のようなVBAを組みました。が、円が2つしか赤くならなかったり、 ばあいによっては「インデックスが境界を超えています」とエラーが出たりします。 どうしたら良いか教えてください。 Sub iro() Dim i As Variant i = InputBox("表示する地点を指定してください", "地点指定") If i = "A" Then ActiveSheet.Shapes(1).Select ActiveSheet.Shapes(2).Select ActiveSheet.Shapes(3).Select Replace:=False hyoji MsgBox "表示を終了してよろしいですか", vbOKOnly ActiveSheet.Shapes(1).Select ActiveSheet.Shapes(2).Select ActiveSheet.Shapes(3).Select Replace:=False modosu ElseIf i = "B" Then ActiveSheet.Shapes(4).Select ActiveSheet.Shapes(5).Select ActiveSheet.Shapes(6).Select Replace:=False hyoji MsgBox "表示を終了してよろしいですか", vbOKOnly ActiveSheet.Shapes(4).Select ActiveSheet.Shapes(5).Select ActiveSheet.Shapes(6).Select Replace:=False Else MsgBox "指定した地点がありません", vbOKOnly End If End Sub Sub hyoji() Selection.ShapeRange.Line.Visible = msoTrue '「線なし」に設定されている場合、線を表示 Selection.ShapeRange.Line.ForeColor.SchemeColor = 10 Range("A1").Select End Sub Sub modosu() Selection.ShapeRange.Line.Visible = msoFalse '「線なし」に設定 Range("A1").Select End Sub

  • エクセルで描画のコントロール

    エクセルのセル幅を小さく設定(例:25程度)に設定して、セルの境界線をCADでいうグリッドに見立てて直線を描画したいと考えています。その時の条件としては、あるセル範囲(例:B~H,3~20の間)のセルの境界線の交点(下の例で、┌┐┘└├┬┤┴┼となるところ) ┌─┬─┐ │ │ │ ├─┼─┤ │ │ │ └─┴─┘ のみ直線の始点と終点が選択できて、任意の交点同士で直線が垂直、水平、斜めに引けるようなマクロって作ることが出来ますか? 同時に、表示-ツールバー-図形描画などで表示されるボタンからの勝手な描画も禁止にしたいのですが、どうやっていいのか?てんで、解りません。どなたか?詳しい方がいらっしゃいましたら、教えて頂けないでしょうか?宜しくお願いいたします。

  • エクセルVBAで直線図形(オートシェイプ)を書きたいのですが。

    エクセルVBAで直線図形(オートシェイプ)を書きたいのですが。座標の指定方法がいまひとつ分かりません。 マクロの記録で、座標数値の設定は分かるのですが、セルに対しての指定方法が分かりません。 図形をドラッグ指定したA1セルからC1セルまで直線を書きたいのです。セルへの始点終点の指定方法が有るのでしょうか。

  • Excelの図形描画について

    Excelのセル幅を小さくしてセル枠を方眼用紙のようにし、図形描画機能の図や線をセル枠に沿って配置して作図しています。 また、私はよく図形をコピーし、目的位置のセルをクリックして貼り付けています。 (そのセルが貼り付けられた図形の基点(左上)となることを期待しています。) 困っているのは直線の貼り付けです。 セル枠に関係なく引いた線をコピーした場合は、クリックしたセルの位置に期待通りに貼り付けられるのに、セル枠にぴったり合わせて引いた線の場合は期待通りにいきません。 セル枠にぴったりの線も、クリックしたセル位置に貼り付けるにはどうすればよいのでしょうか。 ちなみに、以前使っていたPC(Win98/Excel2000)では問題ありませんでした。PCを変えたら(WinXP/Excel2000)そのようになってしまったので、どこかの設定ではないかと思うのですが、それが分かりません。 何かアドバイスなどありましたら、お願いします。

  • Excel VBA 数値を入れ 図形の線を変える

    図形を作成し、毎年更新をするのですが 数値を入れて、画像の線の幅を変更したいです。 下記、内容で作成したのですが、うまく動きません。 何が問題でしょうか? 数値を入れる場所は、B51になります。 Sub Macro1() ' Dim i As Integer Dim ws1 As Worksheet Set ws1 = ActiveSheet For i = 1 To 20 ActiveSheet.Shapes(ws1.Cells(50 + i, 1).Value).Select Selection.ShapeRange.Line.Weight = ws1.Cells(50 + i, 2).Value Next i End Sub

  • 円弧の描画について

    エクセルのワークシート上に2点(x1,y1)、(x2,y2)の座標があり、半径がrと決まっている場合に、(x1,y1)を始点、(x2,y2)を終点とする半径rの円弧を描きたいのですが、VBAで教えていただけますでしょうか? 例えばエクセルのワークシート上に2点(600,400)と(500,300)という座標があります。この座標は、 Dim ShapeA As Shape, ShapeB As Shape Set ShapeA = ActiveSheet.Shapes.AddShape _ (msoShapeOval, 600, 400, 2, 2) Set ShapeB = ActiveSheet.Shapes.AddShape _ (msoShapeOval, 500, 300, 2, 2) というコードでワークシート上に描いています。 この2点をそれぞれ始点、終点として、半径100の円弧を描く方法を考えているのですが、 VBA初心者の為、困っています。VBAで円弧を描く方法がありましたら是非教えていただきたく お願い致します。 よろしくお願い致します。

  • 平均速度とは。

    平均速度はベクトルですか。それともスカラーですか。 例えば、 高さhから水平に初速vでボールを投げてボールが地面に落ちたとします。この間のボールの平均速度というのは、放物線にそった道のりの速度の平均のことでしょうか。 それとも、始点と終点の位置の変位をかかった時間で割ったものですか。この場合、方向と大きさをもったベクトルです。(方向は始点から終点を直線で結んだ方向です) どちらでしょうか。

  • VBA 画像貼り付けのオプション指定法

    VBA初心者です。MS Office 201で,Excelに画像を貼り付けるとき,アスペクト比を保って幅を指定,位置をセルの位置で指定,名前を付けたいので,ネットを参考にして,以下の通りにしました。 Range("A6").Select 'A6の位置を指定 ActiveSheet.Pictures.Insert(myFile).Select 'myFileはあらかじめ設定 With ActiveSheet.Shapes(3) .LockAspectRatio = True .Width = 160 .Name = "Pict01" '名前はPict01 End With ここで,Shapes(3)の3は,画像やボタンがこのシートで3番目だからです。しかし,マクロ実行前に,ボタン等を増やすと変わってきてしまいます。この(3)の様な指定なしにできませんでしょうか。

専門家に質問してみよう