Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2011, 15:05   #1
gramp
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 85
По умолчанию почему скрипт в модуле работает, а в листе нет?

уважаемые, осваиваю vba
вот код

Sub timer11()
Application.Run "timer10"
End Sub
Sub timer10()
Dim flagrun As Integer
flagrun = Worksheets("1").Range("A11").Value
If flagrun = 1 Then
Application.Run "messag11"
End If
If flagrun = 0 Then
MsgBox "закончено"
Exit Sub
End If
Application.OnTime Now + TimeValue("00:00:05"), "timer11"
End Sub
Sub messag11()
Dim MySecond As Integer
MySecond = Second(Time)
MsgBox "MySecond= " & MySecond
End Sub

почему, когда я его размещаю в модуле, то он работает, а когда в листе (конечно же, с другими именами процедур) то не работает?

второй вопрос - предположим, что messag11 расположен в листе "1", а timer10 и timer11 - в модуле, как вот эту команду Application.Run "messag11" написать так, чтобы она запустила messag11, код которого находится на листе "1"?
gramp вне форума Ответить с цитированием
Старый 15.02.2011, 15:26   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
Sub timer10()
Dim flagrun As Integer
flagrun = Worksheets("1").Range("A11").Value
If flagrun = 1 Then
Application.Run "Лист1.messag11"
End If
If flagrun = 0 Then
MsgBox "çàêîí÷åíî"
Exit Sub
End If
Application.OnTime Now + TimeValue("00:00:05"), "Лист.messag11"
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 15.02.2011, 17:47   #3
Djeki
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 136
По умолчанию

Макросы модуля листа являются приват, независимо от их обьявления публик , и вызвать их из другого модуля нельзя никак !!!
Djeki вне форума Ответить с цитированием
Старый 15.02.2011, 17:57   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Разве?
В листе Sheet1
Код:
Sub tt()
MsgBox 1
End Sub
В модуле
Код:
Sub ttt()
Sheet1.tt
End Sub
Прекрасно себе работает...
Причём не только из основного модуля, но и из модуля другого листа.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 15.02.2011, 18:01   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

проверить бы не мешало
Заменил вложение,выгрузил не тот файл
Вложения
Тип файла: rar проверка мкроса.rar (8.5 Кб, 8 просмотров)
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 15.02.2011 в 18:59.
doober вне форума Ответить с цитированием
Старый 15.02.2011, 18:20   #6
Djeki
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 136
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Разве?
В листе Sheet1
Код:
Sub tt()
MsgBox 1
End Sub
В модуле
Код:
Sub ttt()
Sheet1.tt
End Sub
Прекрасно себе работает...
Причём не только из основного модуля, но и из модуля другого листа.
Вы правы. Но порядок вызова отличается от обычного..
Sheet1.tt
Djeki вне форума Ответить с цитированием
Старый 16.02.2011, 00:18   #7
gramp
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 85
По умолчанию

спасибо большое)
gramp вне форума Ответить с цитированием
Старый 16.02.2011, 05:58   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Сообщение от Djeki Посмотреть сообщение
...вызвать их из другого модуля нельзя никак !!!
Кто Вам такое сказал? Какие проблемы вызвать private макрос из другого модуля? Я часто так делаю. Например, если требуется запускать макрос по нажатию кнопки на рабочем листе, то я этому макросу устанавливаю статус private. В результате, его не видно в списке макросов. Во-первых, это ни к чему. Во-вторых, исключается возможность запуска макроса при другом активном листе.
А запустить private макрос (например, с именем "Main") из другого модуля очень просто, используя
Код:
Run "Main"
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 23.05.2011, 23:56   #9
gramp
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 85
По умолчанию

подниму тему - к сожалению, при размещении кода в листе, а не в модуле, вот так не работает: Application.Run "Лист1.messag11"
офис 2010
есть ли способ запустить процедуры в листе?
код в первом посте.
gramp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает скрипт ser70 JavaScript, Ajax 11 03.10.2010 17:09
Изучаю javascript не пойму почему не работает скрипт 4e4en JavaScript, Ajax 8 11.09.2010 19:17
Подскажите, почему не работает скрипт void656 HTML и CSS 5 12.01.2010 15:16
Почему не работает тег align=right?valign работает а align нет! aviv HTML и CSS 5 21.01.2009 17:46
FHandle - говорит что нет, хотя эта же процедура успешно работает в модуле Dialogs, о mrandrey Общие вопросы Delphi 2 08.06.2007 15:21