• 締切済み

VBAのイベント

Excel2000でVBAを使用しています。 シート上にグループ化されたオブジェクト (円とテキスト→円の中にテキストで番号が1~100まで入っています)が100個あり、 そのオブジェクトに名前("グル1"~"グル100") をつけています。 「そのオブジェクトの1つをシート上のどこかに移動し、 右クリックすると、次の番号が近くに飛んでくる」 と言うようなものを作りたいと思っていますが、 どうすればよいのでしょうか?

みんなの回答

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

円にテキストを追加すれば、円とテキストをグループ化する必要ってないような、、、 やろうとされている事は結構難しいと思います。 ご希望と違いますが参考になればと思いサンプルを書きました。 試すなら新規ブックで。 '----------------------------------------------------------------- ' 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

関連するQ&A

専門家に質問してみよう