Удивительно, но факт!
Модератор: Naeel Maqsudov
Файл Excel запускается с использованием Private Sub Workbook_Open(). Если ничего не трогать, а сразу вводить текст в ту ячейку, которая оказалась активной, то ввод происходит не в ячейку, а перед заголовком "Private Sub Workbook_Open()".
Например, получится так: "вввввPrivate Sub Workbook_Open()".
Сначала ничего не видно. Перещелкнул ячейки, ввел, что надо, и продолжаешь работать. Но при сохранении файла выдаётся ошибка компиляции. Вот тут-то и видно, куда на самом деле шел первый ввод.
Получается, что пользователь может вызвать ошибку компиляции. Хорошо, что пишется не внутри процедуры, а рядом. А то, такое можно было бы написать!
Сталкивался ли кто с подобным явлением?
Попытка принудительной активизации ячеек не проходит.
При установке защиты кода проекта ситуация не проявляется.
Например, получится так: "вввввPrivate Sub Workbook_Open()".
Сначала ничего не видно. Перещелкнул ячейки, ввел, что надо, и продолжаешь работать. Но при сохранении файла выдаётся ошибка компиляции. Вот тут-то и видно, куда на самом деле шел первый ввод.
Получается, что пользователь может вызвать ошибку компиляции. Хорошо, что пишется не внутри процедуры, а рядом. А то, такое можно было бы написать!
Сталкивался ли кто с подобным явлением?
Попытка принудительной активизации ячеек не проходит.
При установке защиты кода проекта ситуация не проявляется.
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
vvb, интересно. А что прописано в Private Sub Workbook_Open() ?
У меня происходило нечто подобное, при отладке по F8, пользовательских форм. Там где присутствует событие Change.
У меня происходило нечто подобное, при отладке по F8, пользовательских форм. Там где присутствует событие Change.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
Прописано:
- отключение линеек прокрутки, ярлычков листов, строки состояния, панелей инструментов,
- создание своего меню с использованием ID-кодов
- отключение линеек прокрутки, ярлычков листов, строки состояния, панелей инструментов,
- создание своего меню с использованием ID-кодов
Да, там ещё есть такая особенность. При запуске скрываются почти все строки и большая часть столбцов.
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
Тогда пробуйте искать "косяк" в
пройдитесь по коду F8, мож чё покажет...- отключение линеек прокрутки, ярлычков листов, строки состояния, панелей инструментов,
- создание своего меню с использованием ID-кодов
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
Похоже, здесь нужно придумать нечто другое, нежели F8.
Сразу после заголовка Private Sub Workbook_Open() поставил Stop.
Пошагово все отрабатывается без проблем. Суть в том, что пошагово исполняется код находящийся внутри тела процедуры, а в рассматриваемом случае происходит ввод символов перед названием процедуры.
Также, если пошагово, то не удается полностью воспроизвести ситуацию. После завершения работы процедуры активным остается окно с кодом. Чтобы начать ввод в рабочий лист требуется щелчок. Это уже другая ситуация, то есть, нормальная.
Помнится, сталкивался с ограничениями по количеству скрытых столбцов. Не здесь ли поискать?
Сразу после заголовка Private Sub Workbook_Open() поставил Stop.
Пошагово все отрабатывается без проблем. Суть в том, что пошагово исполняется код находящийся внутри тела процедуры, а в рассматриваемом случае происходит ввод символов перед названием процедуры.
Также, если пошагово, то не удается полностью воспроизвести ситуацию. После завершения работы процедуры активным остается окно с кодом. Чтобы начать ввод в рабочий лист требуется щелчок. Это уже другая ситуация, то есть, нормальная.
Помнится, сталкивался с ограничениями по количеству скрытых столбцов. Не здесь ли поискать?
Оказалось, что дело не в моём файле, а вообще. Модель, в которой отлавливается ситуации удалось предельно упростить.
- Создаем пустой файл Еxcel
- В Private Sub Workbook_Open() пишем примерно такой код:
Cells(1, 1).Select (можно другой)
- Устанавливаем курсор клавиатуры внутри процедуры или перед Private Sub
- Из VBE сохраняем файл и закрываем его.
- Открываем файл и не щелкая мышью и не переключая активную ячейку делаем короткий ввод в ту я чейку, которая при открытии выглядит как активная
- закрываем файл и на вопрос о сохранении отвечаем утвердительно
- может появиться сообщение об ошибки компиляции
Если Ошибка компиляции не показывается:
- открыть файл
- войти в VBE и посмотреть, что стоит перед Private Sub Workbook_Open(). Должны стоять буковки, которые вы ввели в ячейку.
Действительно, фокус не там оказался. Но в чём сам "фокус"?
-
- Создаем пустой файл Еxcel
- В Private Sub Workbook_Open() пишем примерно такой код:
Cells(1, 1).Select (можно другой)
- Устанавливаем курсор клавиатуры внутри процедуры или перед Private Sub
- Из VBE сохраняем файл и закрываем его.
- Открываем файл и не щелкая мышью и не переключая активную ячейку делаем короткий ввод в ту я чейку, которая при открытии выглядит как активная
- закрываем файл и на вопрос о сохранении отвечаем утвердительно
- может появиться сообщение об ошибки компиляции
Если Ошибка компиляции не показывается:
- открыть файл
- войти в VBE и посмотреть, что стоит перед Private Sub Workbook_Open(). Должны стоять буковки, которые вы ввели в ячейку.
Действительно, фокус не там оказался. Но в чём сам "фокус"?
-