- 締切済み
VBAのイベント
Excel2000でVBAを使用しています。 シート上にグループ化されたオブジェクト (円とテキスト→円の中にテキストで番号が1~100まで入っています)が100個あり、 そのオブジェクトに名前("グル1"~"グル100") をつけています。 「そのオブジェクトの1つをシート上のどこかに移動し、 右クリックすると、次の番号が近くに飛んでくる」 と言うようなものを作りたいと思っていますが、 どうすればよいのでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- papayuka
- ベストアンサー率45% (1388/3066)
円にテキストを追加すれば、円とテキストをグループ化する必要ってないような、、、 やろうとされている事は結構難しいと思います。 ご希望と違いますが参考になればと思いサンプルを書きました。 試すなら新規ブックで。 '----------------------------------------------------------------- ' myOvalAdd を実行すると円を100個作ります。 ' 円をクリックすると次の番号の円が隣に来ます。 Sub myOvalAdd() Dim sh As Shape, i As Integer, x As Integer, y As Integer Randomize For i = 1 To 100 x = Int((300 * Rnd) + 1) y = Int((300 * Rnd) + 1) Set sh = ActiveSheet.Shapes. _ AddShape(msoShapeOval, x, y, 36#, 36#) sh.Name = i sh.TextFrame.Characters.Text = i sh.TextFrame.HorizontalAlignment = xlHAlignCenter sh.OnAction = "myAction" Next i End Sub '----------------------------------------------------------------- Private Sub myAction() Dim sh As Shape, shText As String, x As Integer, y As Integer Set sh = ActiveSheet.Shapes(Application.Caller) x = sh.Left + sh.Width + 1 y = sh.Top shText = sh.Name + 1 For Each sh In ActiveSheet.Shapes If sh.Name = shText Then sh.Top = y: sh.Left = x Exit For End If Next End Sub