создаю 2 прямоугольника кодом, назначаю им
процедуру при нажатии, все работает:
- Код: Выделить всё
Private Sub CommandButton1_Click()
For i = 1 To 2
ActiveSheet.Shapes.AddShape(msoShapeRectangle, i * 100, 100, 80, 30).Select
ActiveSheet.Shapes(i + 1).OnAction = "Sheet1.AddNextLevel"
Next i
End Sub
Public Sub AddNextLevel(Optional z As Variant = 0)
MsgBox z
End Sub
Но мне нужно, чтобы определялось - на какой именно прямоугольник нажали. Для этого я пытался ввести аргумент
в вызов процедуры:
- Код: Выделить всё
Private Sub CommandButton1_Click()
For i = 1 To 2
ActiveSheet.Shapes.AddShape(msoShapeRectangle, i * 100, 100, 80, 30).Select
ActiveSheet.Shapes(i + 1).OnAction = "Sheet1.AddNextLevel(" & i + 1 & ")"
Next i
End Sub
Public Sub AddNextLevel(Optional z As Variant = 0)
MsgBox z
End Sub
Однако в ответ ругательство:
Run-time error '1004':
Formula is too complex to be assigned to object.
Как это сделать чтобы работало? Ну или глобально - как мне определить - на какой из прямоугольников было сделано нажатие (прямоугольников может быть и 100, и 1000, так что нужно динамически).