星型をシート上で回転しながらぐるっと円周のように動かそうと、ためしに下記のマクロを書きましたが、やはり方向転換がぎこちなく、スムーズな丸い動きにはなりません。
かと言って、上下左右以外に動かす方法はないでしょうし、何かいいやり方はないでしょうか?
Sub Star()
With ActiveSheet.Shapes.AddShape(msoShape5pointStar, 273#, 43#, 50#, 50#)
.Fill.ForeColor.SchemeColor = 13
.Line.Weight = 0.75
.Line.ForeColor.SchemeColor = 64
For i = 1 To 180
a = 1
b = 1
If i > 90 Then a = -1
If i < 45 Or i > 135 Then b = -1
.IncrementRotation 2
.IncrementTop 2 * a
.IncrementLeft -2 * b
DoEvents
Next
End With
End Sub
No.2ベストアンサー
- 回答日時:
とりあえず#1の方の参考URLは上の方だけ参考にされたらいかがですか。
すなわち、
X=Rcosθ + X0
Y=Rsinθ + Y0
の部分です。
参考URLでは実数計算の重さを嫌って、工夫されているのですが、それほど頻繁に使用するとも思えないので、このままの式を利用すればよいと思います。
Sub Star()
With ActiveSheet.Shapes.AddShape(msoShape5pointStar, 200#, 344#, 50#, 50#)
.Fill.ForeColor.SchemeColor = 13
.Line.Weight = 0.75
.Line.ForeColor.SchemeColor = 64
wkr = 144
For i = 0 To 3.1415 * 2 Step 3.1415 * 2 / 60
a = Sin(i) * wkr + 200
b = Cos(i) * wkr + 200
.IncrementRotation 2
.Left = a
.Top = b
DoEvents
Next i
End With
End Sub
基本的に上記の数式を当てはめれば、こんな感じになると思います。
この回答への補足
X = Rcosθ + X0
Y = Rsinθ + Y0
の意味が良くわかってないので
For i = 0 To 3.1415 * 2 Step 3.1415 * 2 / 60
もわからないのですね、きっと。
数学のカテで再度質問をしてみます。
ありがとうございました。
ありがとうございます!おかげさまで円運動をする星型シェープが出来ました!VBAでサイン、コサインの計算が出来るとは思いませんでした。すごいですね。
ただ、わからなかったのはFor i = 0 To 3.1415 * 2 Step 3.1415 * 2 / 60 の部分です。
0.10471666・・・刻みで60回まわしてるんですよね?
これってどういう意味なんですか?
よろしければお教え願えませんでしょうか?
No.3
- 回答日時:
軌跡上の等速運動ではないのですが(Left,Topを動かしているため)、時計と反対回りに6時から12時回りに星が動きます。
角度等速変化に変更すれば滑らかになるでしょう。
取りあえず何かの参考になれば。
WaitSec 0.2 の数を少なくすると速く動きます。
Sub test01()
Worksheets("sheet1").Select
Worksheets("sheet1").Activate
'---------
For i = 1 To 50
WaitSec 0.2
Worksheets("sheet1").DrawingObjects.Delete
leftv = i + 100
topv = Sqr(2500 - i ^ 2) + 100
ActiveSheet.Shapes.AddShape(msoShape5pointStar, leftv, topv, 34.5, 34.5). _
Select
DoEvents
Next i
'-------
For i = 1 To 50
WaitSec 0.2
Worksheets("sheet1").DrawingObjects.Delete
leftv = 150 - i
topv = 100 - Sqr(2500 - (50 - i) ^ 2)
ActiveSheet.Shapes.AddShape(msoShape5pointStar, leftv, topv, 34.5, 34.5). _
Select
DoEvents
Next i
End Sub
'---------
Sub WaitSec(sngWaitSec As Single)
Dim sngCurTimer As Single
sngCurTimer = Timer + sngWaitSec
Do
Loop Until Timer >= sngCurTimer
End Sub
No.1
- 回答日時:
これは・・・直線でひし形を描くアルゴリズムではないかと。
円弧と直線は全然違いますよ。小学生の頃の記憶を呼び覚ましましょうw実はそのものずばり円弧を描画するAPIなるものも存在するのですが、円を描くアルゴリズムはよく教科書などにも出て来る基本ですし、まぁ参考URLなどをじっくり読み込めば自作も出来るんじゃないでしょうか。
参考URL:http://www2.starcat.ne.jp/~fussy/algo/algo2-1.htm
> これは・・・直線でひし形を描くアルゴリズムではないかと。
おっしゃる通りです。軌跡を残すわけではないからこれでも円運動に見えないかなあと思ったのですが駄目でした。
参考URL拝見しましたが、からきし数学音痴のわたしには到底無理のようです。トホホ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの図形で弧を書く方法
-
エクセルで、渦巻きを作りたい。
-
autoCADで三辺を指定して三角形...
-
エクセルVBAでオートシェープを...
-
AutoCad 二つの曲線の最も近い...
-
円弧の線上にスナップしたい
-
AUTO CAD操作方法 半円の書き方
-
JW CAD 円に放射状の線を等間隔...
-
auto cadの作図
-
3点を通る円弧の長さを求めたい
-
Auto CADで、接線がうまく引け...
-
AutoCAD 異なるR 接円
-
auto-Cad の使い方 内接する円...
-
エクセルの角丸四角形の角の大...
-
cad作図方法
-
officeのvisioで線を交差させる
-
曲線の横断方向
-
半円の描き方
-
AUTOCADで懸垂曲線(カテナリー...
-
autocad 雲マークの入れ方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの図形で弧を書く方法
-
エクセルで、渦巻きを作りたい。
-
AUTO CAD操作方法 半円の書き方
-
autoCADで三辺を指定して三角形...
-
officeのvisioで線を交差させる
-
AUTOCADで懸垂曲線(カテナリー...
-
JW CAD 円に放射状の線を等間隔...
-
Auto CADで、接線がうまく引け...
-
AutoCad 二つの曲線の最も近い...
-
ハートを書きたい!
-
円弧の線上にスナップしたい
-
JW_CADの設定「点半径」って...
-
【CADで直線と円弧の交点座標を...
-
エクセルの角丸四角形の角の大...
-
曲線の横断方向
-
渦巻き製図
-
mayaでコンストレイントの始点...
-
auto cadの作図
-
Auto-cadで文字をオブジェクト...
-
半円の描き方
おすすめ情報