お世話になっております。
シート上に、予定1、予定2…
実際1、実際2… という名前で作成したオートシェイプがあります。
このオートシェイプをクリックしたら、
既にあるオートシェイプ(矢印)を消し、
オートシェイプ(矢印)を作成するというものをしたいと思っています。
--------------------------
Sub Test()
Dim TESTShape As Shape
Dim i As Long
Dim j As Long
j = 1
For i = 5 To 64
With ActiveSheet.Range("J" & i)
If i Mod 2 = 1 Then '2で割って余りが1なら
Set TESTShape = ActiveSheet.Shapes.AddShape( _
msoShapeRectangle, _
Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height)
TESTShape.Fill.Visible = msoTrue
TESTShape.Select
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 41
TESTShape.Name = "予定" & j '
Else
Set TESTShape = ActiveSheet.Shapes.AddShape( _
msoShapeRectangle, _
Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height)
TESTShape.Name = "実際" & j '
j = j + 1
End If
End With
Next
End Sub
--------------------------
上記プログラムで、シート上にボタンを作成しました。
そのシートに直接プログラムを書き込み?
Private Sub 予定1_Click()
MsgBox "TEST"
End Sub
と試してみていますが、オートシェイプから
シートプログラム?の実行はできないのでしょうか。
このシートは色んなシートにコピーして使おうと思っているため、
ボタンをおしたら矢印を消したり、追加したりする動作も他のブックにコピーしたいと思っています。
そのためシートに書き込もうとしているのですが、上手く行かず…
根本的に、なにか間違っているかもしれません。
シートに書き込むプログラムをどう書くべきなのかあまり良くわかっておりません…。
シート上のボタンをクリックしたら実行できるのは、
標準モジュールに書き込んだプログラムのみなのでしょうか?
質問がわかりにくく、説明不足の点も多々あるかもしれません。
その場合は、どんどん聞いてください。お願いします。
回答お待ちしております。
お礼
回答ありがとうございます。 こんなつたない説明で理解してくださり、本当にありがとうございます!! マクロ登録の方法、とても分かりやすいです。 試しに実行してみたところ、上手く行きました^^ ありがとうございます! >作成したシェイプにVBAからマクロを登録するには >Shape.OnAction プロパティで指定できます。 そんな便利な方法があったのですね…! では、早速やっていきたいと思います! ありがとうございました^^