Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Что значит сообщение Compile error: variable not defined при попытке выполнить макрос?
 
Добрый день!, выдает ошибку Compile error: variable not defined

Код
 For i = 1 To Cells(Rows.Count, "D").End(xlUp).Row

       If Cells(i, 7) = "TNK" Or Cells(i, 7) = "RST" Or Cells(i, 7) = "TY" Then Cells(i, 10) = "SS"
 Next



 Dim i As Long
 Dim iLastRow As Long
 iLastRow = Cells(Rows.Count, "B").End(xlUp).Row

  For i = iLastRow To 1 Step -1
    If Cells(i, 7) = 1 And Cells(i, 8) < 2500 Then Rows(i).ClearContents
  Next

Я поменял местаим части кода

Код
 Dim i As Long
 Dim iLastRow As Long
 iLastRow = Cells(Rows.Count, "D").End(xlUp).Row

   For i = iLastRow To 1 Step -1
  
        If Cells(i, 7) = "TNK" Or Cells(i, 7) = "RST" Or Cells(i, 7) = "TY" Then Cells(i, 10) = "SS"
   Next



 iLastRow = Cells(Rows.Count, "B").End(xlUp).Row

  For i = iLastRow To 1 Step -1
    If Cells(i, 7) = 1 And Cells(i, 8) < 2500 Then Rows(i).ClearContents
  Next

Подскажите корректно макрос будет работать ?
 
У вас таблица заполнена не полностью? почему в двух циклах последняя заполненная строка ищется по разным столбцам?
Изменено: Nordheim - 12 Июл 2019 15:25:00
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, это только часть макроса
 
Цитата
nicex написал: Подскажите корректно макрос будет работать ?
А самому попробовать?  
Согласие есть продукт при полном непротивлении сторон.
 
Цитата
nicex написал:
это только часть макроса
Я вижу, это не ответ на вопрос, если нужна последняя строка диапазона, то  я не вижу смысла в двух циклах,
да и Select Case , как по мне, в данном случае предпочтительней.
"Все гениальное просто, а все простое гениально!!!"
 
Sanja, я попробовал, работает, но проблема проверить результат, опасаюсь что в макросе что то не корректно обрабатывается, поэтому хочу понять не приведет ли такая замена на обум к ошибкам

Nordheim, мои возможности только методом тыка адаптировать готовый код
 
Цитата
nicex написал:
мои возможности только методом тыка адаптировать готовый код
Вы не знаете как ответить на вопрос
Цитата
Nordheim написал:
почему в двух циклах последняя заполненная строка ищется по разным столбцам?
или не хотите, меня не интересовало полный это макрос или часть, я это и так вижу.
Цитата
nicex написал:
мои возможности только методом тыка адаптировать готовый код
про ваши методы я так же не спрашивал. Вопрос тут в таком случае такой, а вы уверены что код вообще работает правильно, коли вы не знаете почему определение последней заполненной строки производится по разным столбцам?
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, я объединил два разных макроса. перед второй частью макроса :

////// iLastRow = Cells(Rows.Count, "B").End(xlUp).Row

 For i = iLastRow To 1 Step -1
   If Cells(i, 7) = 1 And Cells(i, 8) < 2500 Then Rows(i).ClearContents
 Next /////

происходит перестановка колонок и еще какие то замены и тп и тд
 
Ошибка исчезла? Значит решение задачи, вынесенной в название Темы получено. Все остальное ЭТОЙ темы не касается.
Вы сначала разберитесь, что Вы хотите от этого макроса, а уже потом задавайте вопросы, конкретные, в других темах
Согласие есть продукт при полном непротивлении сторон.
 
Цитата
nicex: Compile error: variable not defined
объявите переменную. Для того, чтобы в будущем этого избежать, прочтите инструкцию
1.png (8.23 КБ)
Изменено: Jack Famous - 12 Июл 2019 16:41:33
«Тот, кто несет фонарь, спотыкается чаще, чем тот, кто идет следом.»
Иоганн Пауль Фридрих Рихтер
 
Jack Famous, спасибо

Sanja, как изменить тему на: Я поменял местаим части кода будет ли корректно макрос работать ?
 
Такая ошибка может возникнуть в тысячах разных кодов.
Как назовем тему, пмощники?
 
название темы:
что значит сообщение Compile error: variable not defined при попытке выполнить макрос?

ответ:
в сообщении все сказано: Ошибка компилятора: неопределенная переменная!
эта  значит что в начале модуля есть инструкция Option Explicit которая требует обьявления ЛЮБОЙ переменной прежде, чем она будет использована в коде

решение:
1. удалите строку Option Explicit
или
2.напишите Option Explicit Off
или
3. обьявите перменную (Din переменная as...) раньше, чем обращаетесь к ней где-либо в коде
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Вить, коды-то разные, причина одна.
И название ничем не хуже этого, или этого
 
Андрей, одна в Курилке, по второй более-менее понятно по названию.
А по этой... Вчитываться во все темы нет возможности, вижу обсуждение кода... поэтому и спрашиваю - как переименовать. Если не надо - оставим.
 
Цитата
Ігор Гончаренко написал:
(Din переменная as...)
Dim
Страницы: 1
Читают тему (гостей: 1)
Наверх