Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
Есть модуль Module, в нём есть переменная CurrentName типа String и процедура SetCurrentName, инициализирующая переменную. В WorkBook_Open() создаётся кнопка в тулбаре и вызывается SetCurrentName с ненулевым параметром. На момент нажатия кнопки в тулбаре, CurrentName = "". Из-за чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2009, 20:37 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
*Module1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2009, 20:38 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Из-за того, что у тебя не срабатывает событие WorkBook_Open. Ты закрой книгу сначала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2009, 21:29 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
VladConn, Всё срабатывает: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2009, 09:44 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2009, 10:56 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
sergeyvg, Public CurrentName As String Код: plaintext Я ещё вот что думаю... Код: plaintext 1. 2. 3. 4. 5. Я указываю макрос "CopyToOracle", который находится в Module1. Может, он другой макрос берёт, какое-то другое адресное пространство берёт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2009, 11:35 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
P.S. я в VBA новичок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2009, 11:35 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
Если в модуле книги, где процедура Public Sub Workbook_Open() первой строчкой было бы указано Option Explicit, то при компиляции все необъявленные переменные всплыли бы, в том числе CurrentName. Это бы заставило задуматься, а там бы глядишь, почитав хелп, вместо Dim нашел бы Public. Про макрос "CopyToOracle", раз он не объявлен Private, то автоматом Public, и из "воздуха", как переменные, не всплывает:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2009, 12:12 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
sergeyvg, Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2009, 12:17 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
После вчитывания в первое сообщение, стало более понятна проблема:) По быстрому можно так обойти. В модуль вставить функцию Код: plaintext 1. 2. В обработчике кнопки вставить получение значения (book3.xls - имя книги с модулем) Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2009, 13:26 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
sergeyvg, не понял. кнопке присвоен один обработчик, кнопка висит в тулбаре, выполняется на всех листах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2009, 14:32 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Блин, не понимаю. Тестирую тот же самый файл на своей машине - всё нормально!!! Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2009, 16:10 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Покажите Ваш первоначальный код. Если вы называли переменную глобальной и не объявляли ее как Public в модуле, то Вы вводили всех в заблуждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2009, 17:08 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
VladConn, Attribute VB_Name = "Module1" Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. ERSION 1.0 CLASS BEGIN MultiUse = -1 'True END Attribute VB_Name = "MainBook" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = True Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2009, 17:16 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
Из приведенного текста вобще не понятно, зачем нужна переменная CurrentName, которая нигде не используется. А вот кнопка не будет задействована при открытии книги, если она была до этого сохранена с активным листом, имя которого начинается не с 1-4, может в этом дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2009, 08:37 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Я не уверен, но если проблема еще не решена, то попробуй вместо SetCurrentName (Str) написать SetCurrentName Str Мне кажется, много лет назад у меня было что-то похожее из-за использования устаревшего синтаксиса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2009, 15:35 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
И точно, str то зарезервировано за именем функции, не стоит такие слова использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2009, 16:43 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
sergeyvg, Бинго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2009, 19:11 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
Доброе время суток. Многое перепробовал: изменил названия макросов и глобальной переменной, Workbook_Open по какой-то причине был Public - сделал Private. Только что заменил SetCurrentName (Str) на: 1) SetCurrentName Str 2) Call SetCurrentName (Str) Результат прежний - у меня всё работает, у неё - нет. Причём! После Call SetCurrentName (Str) вызываю MsgBox ("Workbook_Open(). CurrentName = " & CurrentName) - значение верное! Вызываю макрос - строка пустая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2009, 09:44 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Переименуй переменную Str. Это зарезервированное слово. Тебе же sergeyvg указал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2009, 20:18 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
Чтобы процедура Sub Workbook_Open() автоматически запускалась при загрузке, она должна быть в модуле (класса) ЭтаКнига, в англ. версии Excel этот модуль по умолчанию называется ThisWorkbook. А судя по приведенному коду, эта процедура прописана в отдельном модуле класса MainBook. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2009, 01:07 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
что случилось немогу понять: Пишу Public start_day as variant Вроде как должна переменная быть видна всем модулям, а при запуске макроса выдаёт ошибку: Compile Error: Invalid attribute in sub or Function ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2009, 13:06 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
Кстати да, я вот тоже не могу понять, где надо дописать Public, чтобы конструкция работала? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Работает только таких 2 варианта, с Public ничего не получается: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2009, 14:33 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
> Автор: Hugo121 > Кстати да, я вот тоже не могу понять, где надо дописать Public, чтобы конструкция работала? 1. Добавляешь отдельный модуль в котором пишешь 2 строчки: Код: plaintext 1. 3. из Sub tt() удаляешь строку Dim x As Long 4. Запускаешь и смотришь Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2009, 14:56 |
|
||
|
Глобальная переменная. VBA
|
|||
|---|---|---|---|
|
#18+
Вот спасибо! А то нигде сейчас не нашёл, что Public надо в отдельном модуле объявлять. Как-то раньше особо не требовалось, вот и не запомнилось, если и встречал... Всё работает. Только ведь Option Explicit не обязательно, и так работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2009, 15:22 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=35943855&tid=2160431]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 124ms |

| 0 / 0 |
