Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
VBA Встроенные объекты как задать значение?, При попытке задания значения свойству объекта типа Worksheet возникает ошибка "Variable not defined"
 
Ага, понял! Спасибо! Я до этого классы не определял, поэтому создалось ошибочное впечатление, что это там не принципиально.
Изменено: ClearKbdBuf - 10.11.2015 02:21:24
VBA Встроенные объекты как задать значение?, При попытке задания значения свойству объекта типа Worksheet возникает ошибка "Variable not defined"
 
Разобрался, оказывается, внутренние функции надо объявлять после методов. Кроме того, я забыл Set в методе CreateFerula где происходит вызов find_cell(). Теперь все работает. Рабочий вариант приложен к сообщению, если кому интересно.
VBA Встроенные объекты как задать значение?, При попытке задания значения свойству объекта типа Worksheet возникает ошибка "Variable not defined"
 
Удалось смоделировать ошибку. Оказывается, она возникает, когда в модуль класса добавляем функцию find_cell. Пример в приложенном к сообщению файле.
Ранее я думал, что проблема с одинаковым именем параметра sheet, что удивляет. На всякий случай переименовал параметр sheet в методе CreateFerula на wsheet, как я и предполагал не помогло.
Любопытно, что если мы определение поля:
Код
Private WS As Worksheet
Поместим перед определением функции find_cell, то ошибка возникает уже в Module1, при этом ошибка другая: "Object variable or With block variable not set". Эта ошибка возникает при вызове метода:
Код
    F.CreateFerula wsheet:=ThisWorkbook.Worksheets("Лист")
Такое ощущение, что я чего-то не знаю в порядке описания класса.
Изменено: ClearKbdBuf - 09.11.2015 22:34:33
VBA Встроенные объекты как задать значение?, При попытке задания значения свойству объекта типа Worksheet возникает ошибка "Variable not defined"
 
Цитата
Казанский написал:
ClearKbdBuf, да, на первый взгляд выглядит странно. Я хочу найти решение, а для этого увидеть ошибку своими глазами. Что я должен сделать для этого? Создать модуль класса, поместить туда строки из нескольких разрозненных фрагментов, создать модуль, поместить туда строки...
И тут приходит мысль - А МНЕ ЭТО НАДО?! Делать работу за вопрошающего?! Нельзя было приложить книгу?
Справедливое замечание, но к сожалению, книгу не могу выложить целиком из-за конфиденциальности. Поэтому выкладывал по кускам.
Любопытно, но начал готовить другую книгу (приложена к сообщению), чтобы вызвать идентичную ошибку. Все работает без ошибок. Видимо, где-то в синтаксисе косяк в исходном модуле, буду разбираться.
 
VBA Встроенные объекты как задать значение?, При попытке задания значения свойству объекта типа Worksheet возникает ошибка "Variable not defined"
 
Я прекрасно понимаю, что означает Variable not defined.
Мне не понятно, почему это возникает при попытке установить свойство WS описываемого в модуле класса. Это при том, что процедура объявлена внутри модуля класса и в ее область видимости поле WS должно попадать.
Изменено: ClearKbdBuf - 09.11.2015 21:20:21
VBA Встроенные объекты как задать значение?, При попытке задания значения свойству объекта типа Worksheet возникает ошибка "Variable not defined"
 
Друзья, добрый день!

В модуле класса определяю свойство следующим образом:
Код
Private WS As Worksheet 

Кроме того, у меня есть метод класса, описанный в этом же модуле
Код
Public Sub CreateFerula(sheet As Worksheet)
    Set WS = sheet
End Sub

В основном модуле я делаю следующее:
Код
   Set F = New Ferula
   F.CreateFerula sheet:=ThisWorkbook.Worksheets("Лист1")
При этом возникает ошибка: "Variable not defined" вот в этом месте модуля класса:
Код
    Set WS = sheet
Перелопатил весь интернет, не могу понять, что ему не нравится. Кто нибудь сталкивался с подобным?
Изменено: ClearKbdBuf - 09.11.2015 20:24:50
Использование именованных формул в макрофункции ВЫЧИСЛИТЬ, Можно ли?
 
Максим, спасибо огромное, за уделенное время. Однако, делаю тоже самое (как мне кажется  :)  ), но результат прежний.
Все в приложенном файле.
Изменено: ClearKbdBuf - 27.09.2014 23:56:14
Использование именованных формул в макрофункции ВЫЧИСЛИТЬ, Можно ли?
 
Парни, доброго времени суток!

Подскажите, пожалуйста, можно ли каким нибудь образом использовать именованные функции в макрофункции ВЫЧИСЛИТЬ ( англ. Evaluate).
Создаю именованную функцию Eval, которую определяю как =ВЫЧИСЛИТЬ(B1). Предполагается, что в B1 имя именованной функции, например, Test, которая определена как =C1+D1.
Результат: применение =Eval вызывает ошибку #ЗНАЧ!, при этом если в B1 простое выражение, например, 12/3 то результат 4.
Либо я чего-то не пониманию в использовании именованных формул или именованные формулы в Evaluate нельзя применять, есть ли у Вас какая либо информация по этому поводу?

Все описанное реализовано в примере.

Дополнительно: пробовал вызывать в макросе - результат тот же.
Изменено: ClearKbdBuf - 26.09.2014 22:48:46
Страницы: 1
Наверх