|
|
|
Программное назначение событий
|
|||
|---|---|---|---|
|
#18+
Как при программном создании листа Excel, запихнуть в него обработчики событий, например на активацию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 16:14:32 |
|
||
|
Программное назначение событий
|
|||
|---|---|---|---|
|
#18+
Кладешь в модуль Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 12:24:20 |
|
||
|
Программное назначение событий
|
|||
|---|---|---|---|
|
#18+
Если речь идет именно о программном управлении обработчиками событий - то у объекта Excel.Worksheet есть скрытые св-ва OnSheetActivate, OnSheetDeactivate, OnEntry, OnDoubleClick, OnData, OnCalculate. Через них и можно любой обработчик назначить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 13:23:43 |
|
||
|
Программное назначение событий
|
|||
|---|---|---|---|
|
#18+
А в Аутлуке как такое можно сделать...? ClassModule с кодом Dim myOlApp As New Outlook.Application Public WithEvents myOlItems As Outlook.Items Public Sub Initialize_handler() Set myOlItems = myOlApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts).Items End Sub Private Sub myOlItems_ItemAdd(ByVal Item As Object) Dim myOlMItem As Outlook.MailItem Dim myOlAtts As Outlook.Attachments Set myOlMItem = myOlApp.CreateItem(olMailItem) myOlMItem.Save Set myOlAtts = myOlMItem.Attachments ' Add new contact to attachments in mail message myOlAtts.Add Item, olByValue myOlMItem.To = "Sales Team" myOlMItem.Subject = "New contact" myOlMItem.Save End Sub не работает.... на появление нового контакта никакой реакции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2006, 15:52:28 |
|
||
|
Программное назначение событий
|
|||
|---|---|---|---|
|
#18+
Кстати говоря предыдущий пример с Ёкселем тоже не сработал (когда строка Public WithEvents objSheet As Excel.Worksheet лежит в модуле - ругань на нее : only valid in object module, когда я ее кладу в класс-модуль и вызываю через объект класса - объект не создается - синтаксическая ошибка). мож что еще с настройками не так? (Хотя ссылки на объектную модель есть...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2006, 08:23:00 |
|
||
|
Программное назначение событий
|
|||
|---|---|---|---|
|
#18+
Яна КарповаКстати говоря предыдущий пример с Ёкселем тоже не сработал (когда строка Public WithEvents objSheet As Excel.Worksheet лежит в модуле - ругань на нее : only valid in object module, когда я ее кладу в класс-модуль и вызываю через объект класса - объект не создается - синтаксическая ошибка). мож что еще с настройками не так? (Хотя ссылки на объектную модель есть...) Все правильно, конструкция типа Код: plaintext должна быть объявлена в модуле класса. Покажите, как вы создаете экземпляр класса (хотя, лучше полный код), где у вас возникает ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2006, 09:19:40 |
|
||
|
Программное назначение событий
|
|||
|---|---|---|---|
|
#18+
Это в класс-модуль EventHandler Public WithEvents objSheet As Excel.Worksheet Private Sub objSheet_Activate() MsgBox "Hello", vbInformation, "Event" End Sub Это в модуль Option Explicit Dim myEventHandler As EventHandler Public Sub myEvent() Set myEventHandler.objSheet = ThisWorkbook.Worksheets.Add myEventHandler.objSheet.Activate End Sub Причем ObjectBrowser видит класс EventHandler. Тем не менее попытка запустить модуль вызвала сообщение : object variable or With block variable not set ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2006, 10:00:38 |
|
||
|
Программное назначение событий
|
|||
|---|---|---|---|
|
#18+
В модуле, вместо Код: plaintext запиши Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2006, 10:25:18 |
|
||
|
Программное назначение событий
|
|||
|---|---|---|---|
|
#18+
Это отработало.... Dim myEventHandler As New EventHandler Public Sub myEvent() Set myEventHandler.objSheet = ActiveWorkbook.Worksheets(1) myEventHandler.objSheet.Activate End Sub А это нет - метод Add как-то не так используется (наверное имело смысл проинициализировать объект лист) Dim myEventHandler As New EventHandler Public Sub myEvent() Set myEventHandler.objSheet = ActiveWorkbook.Worksheets.Add myEventHandler.objSheet.Activate End Sub --------------- Но обработчик вызвался и это главное. Спасибо огромное )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2006, 10:44:48 |
|
||
|
Программное назначение событий
|
|||
|---|---|---|---|
|
#18+
С Add, тоже должно все нормально работать. Просто сообщение не появляется, т.к. добавленный лист уже активен. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2006, 11:03:15 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=33938041&tid=2184403]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 318ms |

| 0 / 0 |
