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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2015, 13:47   #1
Hrniger
Новичок
Джуниор
 
Регистрация: 03.02.2015
Сообщений: 3
По умолчанию Проблема с глобальной переменной

Добрый день.
Такая непонятка: вызываю форму. в коде формы первая процедура присваивает значение глобальной переменной (переменную объявил в разделе Declarations модуля "Эта книга" так: Public shetchik As Integer),
После этого описана вторая процедура, которая запускается при нажатии кнопки, и эта вторая процедура не видит эту глобальную переменную (значение ее = Empty). помогите пожалуйста сделать чтобы видела.
Вот код:
Sub UserForm_Activate()

schetchik = 3

UserForm1.Label1.Caption = Worksheets("Vocabulary").Cells(sche tchik, 1).Value

End Sub



Private Sub CommandButton1_Click()

If Worksheets("Vocabulary").Cells(shet chik, 2).Value = UserForm1.TextBox1.Value Then
MsgBox ("Точняк!!!")
Else
MsgBox ("Фуфло!!!")
End If

End Sub
Hrniger вне форума Ответить с цитированием
Старый 03.02.2015, 14:11   #2
ikki_pf
Форумчанин
 
Регистрация: 25.02.2012
Сообщений: 166
По умолчанию

у Вас переменная по-разному называется:
Public shetchik As Integer
schetchik = 3
Cells(shetchik, 2)

поэтому присваивание значения происходит не глобальной переменной
это во-первых

объявлять глобальную переменную надо в стандартном модуле
это во-вторых

Последний раз редактировалось ikki_pf; 03.02.2015 в 14:15.
ikki_pf вне форума Ответить с цитированием
Старый 03.02.2015, 14:33   #3
Hrniger
Новичок
Джуниор
 
Регистрация: 03.02.2015
Сообщений: 3
По умолчанию

Цитата:
Сообщение от ikki_pf Посмотреть сообщение
у Вас переменная по-разному называется:
Public shetchik As Integer
schetchik = 3
Cells(shetchik, 2)

поэтому присваивание значения происходит не глобальной переменной
это во-первых

объявлять глобальную переменную надо в стандартном модуле
это во-вторых
Про ошибку в названии понял. Спасибо большое.

А как найти этот стандартный модуль в Project explorer?
Hrniger вне форума Ответить с цитированием
Старый 03.02.2015, 14:36   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

однако...
ikki_pf,
Вы явный претендент на звание "Зоркий сокол" месяца))

Hrniger,
если использовать дерективу Option Explicit
возможно, это напрягает потом обьявлять все переменные прежде чем использовать, зато интерпретатор ВБА сразу обратил бы Ваше внимание на необьявленную переменную

совет для всех,
если что-то не работает как должно, прежде, чем думать о наличии проблемы в Ексель, в операционной системе, в компьютере, в неудачном раположении планет, сначала очень внимательно поищите проблему в своем коде
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 03.02.2015, 15:08   #5
Hrniger
Новичок
Джуниор
 
Регистрация: 03.02.2015
Сообщений: 3
По умолчанию

Разобрался.
Чтобы создать стандартный модуль в Project explorer кликнуть ПКМ - insert - module.
Вот в него я и записал объявление глобальной переменной и после этого все заработало.

Всем спасибо.
Hrniger вне форума Ответить с цитированием
Старый 08.10.2017, 13:58   #6
Виталий_Сахно
Новичок
Джуниор
 
Регистрация: 08.07.2017
Сообщений: 2
По умолчанию

Проблема в следующем. Мой проект стартует с файла Авторизация. В нем в стандартном модуле объявлена переменная meVyzov (мойВызов). После этого макросами из моего меню myPopup открывается нужный файл. После завершении работы с файлом, я чаще всего должен вернуться в главный файл "авторизация". Однако есть файлы в которых я как бы "должен остаться" для того чтобы я мог отследить нужно ли мне после работы с этим файлом вернуться или нет, я и сделал эту переменную. Однако не смотря на то, что она глобальная. В модуле СТРАНИЦЫ (sheets code) ВЫЗЫВАЕМОГО ФАЙЛА эту переменную ВБА не видит. Это стандартно? Или я что-то сделал не так?

Последний раз редактировалось Виталий_Сахно; 08.10.2017 в 14:00.
Виталий_Сахно вне форума Ответить с цитированием
Старый 08.10.2017, 15:30   #7
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Удалил. Кросс:
http://www.planetaexcel.ru/forum/ind...ba-ee-ne-vidit
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 08.10.2017 в 15:37.
kuklp вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с глобальной переменной в C++ Builder VIK_aka_TOR Помощь студентам 2 29.05.2011 12:24
Проблема с глобальной переменной HollyPaladin Общие вопросы C/C++ 4 08.10.2010 12:06
Многопоточность с глобальной переменной Шульц Общие вопросы Delphi 1 30.01.2010 18:19
Объявление глобальной переменной Grom48 Общие вопросы Delphi 3 19.12.2009 22:16
Проблема глобальной переменной Хохматый Microsoft Office Access 1 18.06.2009 13:04