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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2014, 10:27   #1
ac1-caesar
Форумчанин
 
Регистрация: 26.07.2013
Сообщений: 134
По умолчанию Run time error 91: Object variable or with block variable non set, excel 2010 vba (не могу найти ошибку)

Уважаемые форумчане!

Пожалуйста посмотрите файл. Подскажите в чем ошибка.
В комбобоксе выбираю какой либо номер, делаю изменения в текстбоксах (или без изменений) пытаюсь сохранить и вылетает эта ошибка (Run time error 91: Object variable or with block variable non set). По сайтам искал подобные решения, подходящего не нашел. Ну может и руки кривые.
Вложения
Тип файла: rar AD-CN EVALUATION COMPLIANCE REPORT FORM.rar (88.7 Кб, 9 просмотров)
ac1-caesar вне форума Ответить с цитированием
Старый 16.10.2014, 10:43   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

пробема в Вашем коде, там ее надо и искать, а не по сайтам.

номер ошибки написали - уже хорошо,
покажите еще строку в которой произошла ошибка и чуть детальнее при каких действиях это случилось, чтобы можно было повторить, потому что по Вашему пути
Цитата:
В комбобоксе выбираю какой либо номер, делаю изменения в текстбоксах (или без изменений) пытаюсь сохранить и
... и нмчего особого не произошло, я ошибку не получил, выбрал номер, нажал сохранить, не знаю что куда сохранилось, но сообщений об ошибке не было
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.10.2014, 11:13   #3
ac1-caesar
Форумчанин
 
Регистрация: 26.07.2013
Сообщений: 134
По умолчанию

Код:
Sub SAVE_CHANGES()

If Me.TextBox_AD_CN_No <> "" Then

    Dim FindedFlag As Boolean, FindedRow As Long
    Dim CurADNumber As String, RezPoiskaAD As Range
    CurADNumber = Me.TextBox_AD_CN_No.Value
    Sheets("AD_EVALUATION_STATUS").Visible = True
    ThisWorkbook.Sheets("AD_EVALUATION_STATUS").Unprotect Password:="123"
    Sheets("AD_EVALUATION_STATUS").Activate
        With Sheets("AD_EVALUATION_STATUS")
            Set RezPoiskaAD = .Columns(1).Find(What:=CurADNumber, LookIn:=xlFormulas, _
            LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
            If Not RezPoiskaAD Is Nothing Then
                FindedFlag = True
                FindedRow = RezPoiskaAD.Row
                .Cells(FindedRow, Rows(2).Find("AMENDMENT").Column) = Me.TextBox_AMENDMENT.Value
                .Cells(FindedRow, Rows(2).Find("EFFECTIVE DATE").Column) = CDate(Me.TextBox_EFFECTIVE_DATE)
                .Cells(FindedRow, Rows(2).Find("SUPERSEDES").Column) = Me.TextBox_SUPERSEDES.Value
                .Cells(FindedRow, Rows(2).Find("SUBJECT").Column) = Me.TextBox_SUBJECT.Value
               
и т.д...
В этом коде, на этой строке: .Cells(FindedRow, Rows(2).Find("EFFECTIVE DATE").Column) = CDate(Me.TextBox_EFFECTIVE_DATE)

Что странно, раньше не было такой ошибки, даже не знаю после какого действия появилась.
Если в этой строке Rows(2).Find("EFFECTIVE DATE").Column, заменить на столбец 3. Так: .Cells(FindedRow, 3) = CDate(Me.TextBox_EFFECTIVE_DATE), то срабатывает.

А посмотреть куда сохраняется можно нажав кнопку "AD's Table". Листы скрытые.
ac1-caesar вне форума Ответить с цитированием
Старый 16.10.2014, 11:32   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

если коротко, то Find не находит искомого значения, из-за того, что его нет или заданы условия поиска которые не позволяют его найти.

глобально процедура Find - сохраняет настройки условий поиска, и если указать только ЧТО искать то условия поиска будут приняты из предыдущего запуска Find. причем запуск Find из макроса из пользовательского меню - это запуск одного и того же процесса.

поэтому если Вы где-то указали например область поиска формулы то поиск будет производиться там...
и когда в ячейке написано =СЕГОДНЯ()
то поиск 16.10.2014 в значениях найдет эту ячейку, а в формулах - нет.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.10.2014, 11:46   #5
ac1-caesar
Форумчанин
 
Регистрация: 26.07.2013
Сообщений: 134
По умолчанию

А как возможно исправить? Что делать то теперь?
Получается первую строчку обрабатывает:
Код:
.Cells(FindedRow, Rows(2).Find("AMENDMENT").Column) = Me.TextBox_AMENDMENT.Value
а вот на следующей строке:
Код:
.Cells(FindedRow, Rows(2).Find("EFFECTIVE DATE").Column) = CDate(Me.TextBox_EFFECTIVE_DATE)
спотыкается
ac1-caesar вне форума Ответить с цитированием
Старый 16.10.2014, 13:01   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
А как возможно исправить? Что делать то теперь?
искать причину ошибки

повторюсь: открыл файл, выбрал номер, нажал "сохранить", и ничего... все нормально
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.10.2014, 15:03   #7
ac1-caesar
Форумчанин
 
Регистрация: 26.07.2013
Сообщений: 134
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
искать причину ошибки

повторюсь: открыл файл, выбрал номер, нажал "сохранить", и ничего... все нормально
Странно конечно, у меня упорно не хочет работать. Тут ребята подсказали: "В выражениях типа:"
Код:
.Cells(FindedRow, Rows(2).Find("EFFECTIVE DATE").Column) = CDate(Me.TextBox_EFFECTIVE_DATE)
"пропущена точка перед указанием на столбец, исправьте (во многих местах этого модуля) по типу как:
Код:
.Cells(FindedRow, .Rows(2).Find("EFFECTIVE DATE").Column) = CDate(Me.TextBox_EFFECTIVE_DATE)
"Ошибка в том, что номер колонки ищется не на нужном скрытом листе AD_EVALUATION_STATUS, а на активном - MAIN (там нет названий колонок во второй строке)"

Я проставил точки, ошибка теперь не вылетает, но и изменения не сохраняет.
ac1-caesar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
object variable or with block variable not set sergt78 Microsoft Office Excel 4 26.11.2013 10:24
ошибка - Run-time error '91' Object variable or With block variable not set Артур Иваныч Microsoft Office Excel 13 12.09.2012 14:18
Err 91 : Object variable or With block variable not set pla Microsoft Office Access 7 18.10.2011 15:42
run-time error 91 (object variable or with block variable not set) mrs.petrushina Microsoft Office Access 5 19.04.2011 12:59
run-time error 91 (object variable or with block variable not set) mrs.petrushina Microsoft Office Excel 7 05.04.2011 00:22