Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: как определить - на какой объект нажали Добавлено: 17.12.08 17:22  

Автор вопроса:  Sergei | Web-сайт: www.goldpirating.com
Привет, вопрос такой
создаю 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, так что нужно динамически).

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #1 Добавлено: 17.12.08 18:00
Подход верный, но Вы допускаете типичную ошибку:
  1. Sheet1.AddNextLevel(" & (i + 1) & ")

Исходя из Вашего уровня, думаю, что объяснения не требуются ;)

Ответить

Номер ответа: 2
Автор ответа:
 Father



Вопросов: 0
Ответов: 159
 Профиль | | #2 Добавлено: 21.12.08 05:35
  1.  
  2. Private Sub CommandButton1_Click()
  3. Dim i As Integer
  4.     For i = 1 To 2
  5.         ActiveSheet.Shapes.AddShape(msoShapeRectangle, i * 100, 100, 80, 30).OnAction = "'AddNextLevel " & i & "'"
  6.     Next i
  7. End Sub
  8.  
  9. 'в модуле !
  10. Public Sub AddNextLevel(z As Integer)
  11.     MsgBox z
  12. End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам