Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Изменился объект Sheets - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменился объект Sheets (Макросы/Sub)
Изменился объект Sheets
sonwookong Дата: Вторник, 20.01.2015, 14:21 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте,
Имеется бланк екселя в который пользователи заносят данные и отсылают почтой, затем VBA собирает из этих файлов информацию в "одну кучу".
С одним из файлов что-то произошло: теперь tekF.Sheets("лист1").Cells(i, 4).Value выпадает в ошибку "Run-time error '32809': Application-defined or object-defined error".
Другие такие-же файлы обрабатываются нормально.

Выяснил:
1. Если обратиться к другому листу в книге все работает нормально. т.е. tekF.Sheets("лист2").Cells(i, 4).Value выдает значение ячейки.
2. В дебагере на объект tekF.Sheets("лист1") открывая его свойства cells запускается мастер настройки MS Outlook. я так понимаю пытается отправить какую-то почту, а т.к. почтовый клиент не настроен - толкает его настройку.

Как забороть эту ошибку?

[moder]Добрый день.
Для начала прочитайте правила форума п.3
Без файла помогающих прошу не помогать[/moder]


Сообщение отредактировал DJ_Marker_MC - Вторник, 20.01.2015, 15:14
 
Ответить
СообщениеЗдравствуйте,
Имеется бланк екселя в который пользователи заносят данные и отсылают почтой, затем VBA собирает из этих файлов информацию в "одну кучу".
С одним из файлов что-то произошло: теперь tekF.Sheets("лист1").Cells(i, 4).Value выпадает в ошибку "Run-time error '32809': Application-defined or object-defined error".
Другие такие-же файлы обрабатываются нормально.

Выяснил:
1. Если обратиться к другому листу в книге все работает нормально. т.е. tekF.Sheets("лист2").Cells(i, 4).Value выдает значение ячейки.
2. В дебагере на объект tekF.Sheets("лист1") открывая его свойства cells запускается мастер настройки MS Outlook. я так понимаю пытается отправить какую-то почту, а т.к. почтовый клиент не настроен - толкает его настройку.

Как забороть эту ошибку?

[moder]Добрый день.
Для начала прочитайте правила форума п.3
Без файла помогающих прошу не помогать[/moder]

Автор - sonwookong
Дата добавления - 20.01.2015 в 14:21
SLAVICK Дата: Вторник, 20.01.2015, 15:17 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Великий гугл найдет все.:
Если не то - то есть два варианта:
Либо Вы выкладываете файл пример согласно правил форума
Либо обращаетесь за помощью к экстрасенсам :D
Возможно повезет последних найти здесь на форуме :D
Меня опередил модератор :'(


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 20.01.2015, 15:24
 
Ответить
СообщениеВеликий гугл найдет все.:
Если не то - то есть два варианта:
Либо Вы выкладываете файл пример согласно правил форума
Либо обращаетесь за помощью к экстрасенсам :D
Возможно повезет последних найти здесь на форуме :D
Меня опередил модератор :'(

Автор - SLAVICK
Дата добавления - 20.01.2015 в 15:17
sonwookong Дата: Вторник, 20.01.2015, 15:49 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Извиняюсь,
просто файлы очень секретные :(
в книге сломанный лист, и один нормальный лист, остальное спрятал.

файлы >300кб поэтому ссылка: Удалено. Нарушение Правил форума. Тем более секретные

Бедовый лист: КПА.xlsm!ТУРВ-ПЛАН
Как увидеть ошибку: Открыть файл Сводный.xlsm лист Настройка, нажать ЗАПОЛНИТЬ, выбрать файл КПА.

to Славик: тема не найдена


Сообщение отредактировал Pelena - Вторник, 20.01.2015, 16:21
 
Ответить
СообщениеИзвиняюсь,
просто файлы очень секретные :(
в книге сломанный лист, и один нормальный лист, остальное спрятал.

файлы >300кб поэтому ссылка: Удалено. Нарушение Правил форума. Тем более секретные

Бедовый лист: КПА.xlsm!ТУРВ-ПЛАН
Как увидеть ошибку: Открыть файл Сводный.xlsm лист Настройка, нажать ЗАПОЛНИТЬ, выбрать файл КПА.

to Славик: тема не найдена

Автор - sonwookong
Дата добавления - 20.01.2015 в 15:49
SLAVICK Дата: Вторник, 20.01.2015, 16:32 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
to Славик: тема не найдена

Я заменил ссылку. на справку... ссылки на другую планету не работают.

В Вашем коде нужно дать определение листу:

Далее в всех макросах аналогично. :D
Какие шустрые модераторы. Опять опередили hands


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 20.01.2015, 16:42
 
Ответить
Сообщение
to Славик: тема не найдена

Я заменил ссылку. на справку... ссылки на другую планету не работают.

В Вашем коде нужно дать определение листу:

Далее в всех макросах аналогично. :D
Какие шустрые модераторы. Опять опередили hands

Автор - SLAVICK
Дата добавления - 20.01.2015 в 16:32
sonwookong Дата: Вторник, 20.01.2015, 18:38 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо. тема закрыта.

только:
1. Непонятно почему так? ведь на других файлах "старый код" работает. Да и всю дорогу стараюсь по-минимуму объектов создавать - первый раз с такой бякой столкнулся (
2. и еще непонятно почему
[vba]
Код
Dim wsh, wsh1 As Worksheet
[/vba]
не работает с той-же ошибкой, а
[vba]
Код
Dim wsh As Worksheet
Dim wsh1 As Worksheet
[/vba]
работает?
 
Ответить
СообщениеСпасибо. тема закрыта.

только:
1. Непонятно почему так? ведь на других файлах "старый код" работает. Да и всю дорогу стараюсь по-минимуму объектов создавать - первый раз с такой бякой столкнулся (
2. и еще непонятно почему
[vba]
Код
Dim wsh, wsh1 As Worksheet
[/vba]
не работает с той-же ошибкой, а
[vba]
Код
Dim wsh As Worksheet
Dim wsh1 As Worksheet
[/vba]
работает?

Автор - sonwookong
Дата добавления - 20.01.2015 в 18:38
RAN Дата: Вторник, 20.01.2015, 18:55 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Не работает и работает потому, что в первом случае wsh объявлено As Variant, а во втором As Worksheet.
As определяет тип только к одной переменной.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНе работает и работает потому, что в первом случае wsh объявлено As Variant, а во втором As Worksheet.
As определяет тип только к одной переменной.

Автор - RAN
Дата добавления - 20.01.2015 в 18:55
Wasilich Дата: Вторник, 20.01.2015, 22:47 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Андрей, я немножко разжую. Вдруг еще кому то пригодится.
При объявлении переменных через запятую в виде:
[vba]
Код
Dim a, b, c, d, e As Worksheet
[/vba]только переменная "е" будет иметь тип Worksheet, остальные же - a, b, c, d будут иметь тип "Variant".
Тип Variant удобен в коротких программах, но он потребляет больше памяти, потому что, компилятор сам пытается определить тип переменной (что не всегда получается, как в вашем случае) и только потом применяет ее в вычислениях. Поэтому для надежной работы программы, тип переменной необходимо указывать для каждой переменной. Можно пользоваться, так называемым символьным определением типа.
Dim a$ '- as string
Dim b% '- as integer
Dim c& '- as long
Dim d# '- as double
Dim e@ '- as currency
Dim f! '- as single
Dim g '- as variant
и ест-но, можно через запятую.


Сообщение отредактировал Wasilic - Вторник, 20.01.2015, 23:05
 
Ответить
СообщениеАндрей, я немножко разжую. Вдруг еще кому то пригодится.
При объявлении переменных через запятую в виде:
[vba]
Код
Dim a, b, c, d, e As Worksheet
[/vba]только переменная "е" будет иметь тип Worksheet, остальные же - a, b, c, d будут иметь тип "Variant".
Тип Variant удобен в коротких программах, но он потребляет больше памяти, потому что, компилятор сам пытается определить тип переменной (что не всегда получается, как в вашем случае) и только потом применяет ее в вычислениях. Поэтому для надежной работы программы, тип переменной необходимо указывать для каждой переменной. Можно пользоваться, так называемым символьным определением типа.
Dim a$ '- as string
Dim b% '- as integer
Dim c& '- as long
Dim d# '- as double
Dim e@ '- as currency
Dim f! '- as single
Dim g '- as variant
и ест-но, можно через запятую.

Автор - Wasilich
Дата добавления - 20.01.2015 в 22:47
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменился объект Sheets (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!