Проблема с присваеванием значений переменной

Программирование на Visual Basic for Applications
Brudda
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 21.02.2005 (Пн) 14:47
Откуда: Рига

Проблема с присваеванием значений переменной

Сообщение Brudda » 16.03.2010 (Вт) 13:05

Привет.
У коллеги работает неправильно одно приложение (Excel). Решил посмотреть в чем проблема.
Код: Выделить всё
Dim strVersion As String
....
strVersion = "Error" ' тут присваивание происходит нормально
.....
strVersion = UCase(Workbooks(StrWkbkname).Sheets("Flatdata").Range("UTATVersion").Value) 'а вот тут значение переменной по-прежнему остается "Error"


Может кто знает, почему так происходит? И как с этим бороться?
Заранее спасибо.
С почтением,
Brudda

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Проблема с присваеванием значений переменной

Сообщение Денис » 16.03.2010 (Вт) 13:29

У Вас была именованная область "UTATVersion", но к сожалению, кончилась.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Brudda
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 21.02.2005 (Пн) 14:47
Откуда: Рига

Re: Проблема с присваеванием значений переменной

Сообщение Brudda » 16.03.2010 (Вт) 13:37

Э... не понял, честно говоря, как это кончилась? Куда ж она делась? Это ведь просто ячейка, в которой есть какое-то число. Поясни пожалуйста.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Проблема с присваеванием значений переменной

Сообщение Денис » 16.03.2010 (Вт) 14:22

Brudda писал(а):Э... не понял, честно говоря, как это кончилась? Куда ж она делась? Это ведь просто ячейка, в которой есть какое-то число. Поясни пожалуйста.

Я имел ввиду, эта ячейка точно осталась поименованной? или код перетянули в новую книгу, в которой эта ячейка не поименована?
И второй совет, использовать Value2 Вместо Value.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Brudda
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 21.02.2005 (Пн) 14:47
Откуда: Рига

Re: Проблема с присваеванием значений переменной

Сообщение Brudda » 16.03.2010 (Вт) 14:59

Денис, cпасибо за участие - но не помогло. Поименованная ячейка - осталась поименованной.
Проблема, как выяснилось, с Workbooks(StrWkbkname). Когда я заменил это на ActiveWorkbook - все заработало как и надо. Но все же хотелось бы разобораться что это за косяк такой.
Буду благодарен за идеи.
С почтением,
Brudda

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Проблема с присваеванием значений переменной

Сообщение Денис » 16.03.2010 (Вт) 15:15

Brudda писал(а):Буду благодарен за идеи.

А Workbooks(StrWkbkname) возвращает нормальную, корректную книгу?
Поубирайте в проекте On Error Resume Next'ы и скажите код ошибки?
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Brudda
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 21.02.2005 (Пн) 14:47
Откуда: Рига

Re: Проблема с присваеванием значений переменной

Сообщение Brudda » 16.03.2010 (Вт) 16:13

Workbooks(StrWkbkname) возвращает нормальную, корректную книгу.
Самое странное, что строка
Код: Выделить всё
strVersion = UCase(Workbooks("ТУТ_НАЗВАНИЕ_КНИГИ.ХЛС").Sheets("Flatdata").Сells(1,1).Value)

тоже не работала, т.е. в переменной сохранялось предыдущее значение.
Я построчно проходил этот кусок программы - все, в роде, в порядке, ошибок нет, программу не выбивает... Спас только ActiveWorkbook

GDK
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 23.10.2008 (Чт) 16:15

Re: Проблема с присваеванием значений переменной

Сообщение GDK » 18.03.2010 (Чт) 16:07

Код: Выделить всё
strVersion = UCase(Workbooks("ТУТ_НАЗВАНИЕ_КНИГИ.ХЛС").Sheets("Flatdata").Сells(1,1).Value)

Может перед ней была строка On error resume next? Поэтому и ошибок не выдавалось.

Можно попробовать в debug.print выводить по частям сначала название книги,потом листа и пока не выяснится в чём дело.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 11

    TopList