
エクセルのワークシート上に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で円弧を描く方法がありましたら是非教えていただきたく
お願い致します。
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
私なりにやってみて以下報告します。
ただし、私には判らない点は残ったままですが。ーー
エクセルのオートシェイプで基本図形に円弧(Arc)があります。
Shiftキーを押しつつ書くと真円の1/4円弧がかかれるようです。
そこで右下の黄色い小○点を上に引き上げると、1/4円でなく円の一部になるようです。
マクロの記録をとると
Sub Macro1()
ActiveSheet.Shapes.AddShape(msoShapeArc, 200, 200, 300, 300).Select
Selection.ShapeRange.Adjustments.Item(2) = 54.9544
End Sub
などのようになります。
300,300はHeight、Widthの値で、1/4円の場合は半径に当たるので、半径を指定すればよいと思う(*1)。
「そこで黄色い小○点を上に引き上げる」操作が、Adjustments
にたると思います(*2)
そして左上黄色小○点を動かすと
Selection.ShapeRange.Adjustments.Item(1) = 76.017
とItem(1)になるところから、Item(1)が左上黄色小○点、Item(2)が右下黄色小○点を左右するものと思います(*3)
この数値を決めると任意の円弧をワークシート上に描けると思われます。
(ただし、下手に図形のサイズを変えると、図形がゆがんで円弧でなくなります。黄色小○点を掴んで端点を動かすことです。)
ーー
>、(x1,y1)を始点、(x2,y2)を終点とする場合どう計算するか
は勉強してみてください。
ーー
*1-*3が私には断言できるか100%は自信の無いところです。
ーー
そして同じようなことを考えた
http://park7.wakwak.com/~efc21/cgi-bin/exqaloung …
がありました。
「Adjustments.Item VBA」でWEB照会すると、予想外の結構の数の記事があるようです。調べてみてください。
ーー
微少直線で円を書くこともやってみましたが、微少直線1つ1つが独立した線(オブジェクト)で、グループ化などがややこしくて、考えるのをやめました。
参考
円弧を描く
Sub test03()
Worksheets("sheet1").DrawingObjects.Delete
r = 300
mx = 100
l = 400
my = l - Sqr(r ^ 2 - mx ^ 2)
For x = 100 To 250 Step 1
y = l - Sqr(r ^ 2 - x ^ 2)
ActiveSheet.Shapes.AddLine mx, my, x, y
mx = x
my = y
Next
End Sub
ーー
何かの参考になれば。
No.1
- 回答日時:
こんにちは。
描画オブジェクトのひとつに「曲線」がありますが、マウスでクリックした点をつないで曲線にするものです。
円弧の通過点を計算して追加していけば円弧になると思います。オブジェクトの名前やメソッドはマクロのレコーディング機能で確認できます。
では。
この回答への補足
akina_line様
早々にご教授いただきありがとうございます。参考にさせていただきます。
質問の補足なのですが、エクセルのA列にX座標、B列にY座標が
1行~n行あらかじめ入力されており、エクセル上にそれぞれのXY
座標を描画して、1行目のXY座標と次の行の
XY座標を直線コネクタで結ぶという作業をn行まで行っています。
ところがたまにC列に半径Rが入る事があり、その場合は、
2点の座標を半径Rの円弧で結ぶ必要があります。
その為、2点を1つの円弧で出来れば結びたいと考えています。
ActiveSheet.Shapes.AddShape(msoShapeArc, X1, Y1, R R).Select
Selection.ShapeRange.Adjustments.Item(1) = 開始角
Selection.ShapeRange.Adjustments.Item(2) =終了角
みたいな形で描画出来ればと思うのですが、開始角と終了角を
求めるコードが、なかなか思い浮かびません。
素人でまだまだ勉強不足な為、稚拙な質問で大変申し訳ありませんが、
何卒ご教授いただきたくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 数学について この問題の(2)、点Eが点AからBへ動く時になぜ点A'が 点Cまで弧を書いているのかが 1 2023/04/15 00:37
- Visual Basic(VBA) VBAプログラミング 2 2022/11/27 12:13
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- C言語・C++・C# ある線が円の範囲に入っているかの計算 1 2022/12/07 16:14
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- 数学 球面と接する直線の軌跡が表す領域 4 2023/07/30 12:37
- 数学 数学ベクトルに関しての質問 3 2022/05/25 23:21
- Visual Basic(VBA) エクセル VBAについて教えてください 2 2023/04/26 13:25
- CAD・DTP AUTO CAD操作方法 半円の書き方 1 2022/06/20 09:16
- その他(プログラミング・Web制作) Pythonによる物理の斜方投射の位置座標表示について 2 2023/06/05 12:46
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
みんなの【マイ・ベスト積読2024】を教えてください。
積読、ついついしちゃいませんか?そこでみなさんの 「2024年に買ったベスト積読」を聞きたいです。
-
人生でいちばんスベッた瞬間
誰しも、笑いをとろうとして失敗した経験があると思います。
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
エクセルの図形で弧を書く方法
Excel(エクセル)
-
エクセルVBA、フリーフォームで円を描画したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3次元空間上の2つの座標から...
-
ワード上Shapeの位置情報を統一...
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
複数の回転する長方形の衝突判定
-
WM_NCHITTESTの流れ
-
タッチパッドのタッチ座標取得
-
VBで、開いているExcelシートの...
-
始点、終点の二つの座標と半径...
-
抽出した特徴点の座標を取得し...
-
選択範囲の座標値の抽出
-
空間座標(3次元)を平面座標(2次...
-
エクセルで回転する座標の出し方
-
内積を用いた移動する線分と円...
-
プログラミングの問題について...
-
任意軸回転を、XYZ軸回転の...
-
シーケンサー(PLC?)で制...
-
ダイアログ内コントロールの位...
-
ASP.NET フォーム上でp...
-
弧の角度から座標を求めるには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
3次元空間上の2つの座標から...
-
エクセルである点からの距離で...
-
エクセルで回転する座標の出し方
-
ワード上Shapeの位置情報を統一...
-
始点、終点の二つの座標と半径...
-
閉図形の座標の配列が右回りか...
-
シーケンサー(PLC?)で制...
-
C言語 配列で座標
-
Excel VBA で自在に図形を変化...
-
多角形の内部かどうか判定する方法
-
以下のプログラムは重心を求め...
-
交差する2線分の交点座標の求め方
-
ダイアログ内コントロールの位...
-
ガウシアンフィルタのCプログラム
-
空間上の二点を結ぶ直線上に任...
-
スクリーン座標からワールド座...
-
回転する矩形同士の当たり判定...
-
PPTのVBA スライド右下端の座...
おすすめ情報