dポイントプレゼントキャンペーン実施中!

Excel VBA初心者です。
Excel のオートシェイプで任意の四角を描くには、始点をマウスでクリックし対角にドラッグすれば自由な四角が描けますが、VBAでこれを行なう場合、どのように記述すればいいのでしょうか?。
Excel は2003です。

いろいろ調べてみると…
一例ですが…

Set Shp = WS.Shapes.AddShape(msoShapeRectangle, 50, 50, 100, 40)

このような記述をよく目にします。
恐らくこれは始点(50,50)、四角の大きさ(100,40)となると思います。
私がVBAで描きたいのは、マウスを使った任意の位置と大きさの四角と丸です。
説明が下手で申し訳ありませんが、よろしくお願いします。

A 回答 (1件)

>私がVBAで描きたいのは、マウスを使った任意の位置と大きさの四角と丸です。


例えばマクロの流れの中でユーザーに操作させたい、という意味でしょうか。

If MsgBox("drawing?", vbYesNo) = vbYes Then
  '[四角形(&R)]のコマンドボタン(ID:=1111)を押す動作。楕円(&O)は1119
  Application.CommandBars.FindControl(ID:=1111).Execute
  'または以下と差し替えても良い。
  'Application.CommandBars.FindControl(ID:=1111).accDoDefaultAction
End If

この回答への補足

end-u 様
ご回答、ありがとうございます。

>例えばマクロの流れの中でユーザーに操作させたい、という意味でしょうか。

そうです。その通りです。
説明不足で申し訳ありません。

end-u 様のご回答を早速試してみました。
"drawing?"とメッセージが出て、「はい」を選択しますが何も起こらず「はい」を押した瞬間に終了してしまいます。

Public Sub a1()
If MsgBox("drawing?", vbYesNo) = vbYes Then
'[四角形(&R)]のコマンドボタン(ID:=1111)を押す動作。楕円(&O)は1119
Application.CommandBars.FindControl(ID:=1111).Execute
'または以下と差し替えても良い。
'Application.CommandBars.FindControl(ID:=1111).accDoDefaultAction
End If
End Sub

現在の記述です。
何か足りないのでしょうか?

補足日時:2010/12/14 08:56
    • good
    • 0
この回答へのお礼

end-u 様

いろいろやってみたら期待通りに動いてくれました。
ありがとうございます。

お礼日時:2010/12/14 11:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!