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

Вход

Регистрация

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

 

= Мир MS Excel/object variable or with block variable not set - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » object variable or with block variable not set (Макросы/Sub)
object variable or with block variable not set
x0r Дата: Четверг, 28.05.2015, 14:36 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Приветствую!

Поломался простой макрос, не могу понять как исправить. Выдаёт ошибку object variable or with block variable not set
Суть макроса - нахождение ячейки и перенос всей строки на другой лист.

[vba]
Код
Sub MoveMat()
Dim i As Integer
Dim ItemName
        i = 1
        ItemName = Sheets("123").Cells(i, 1)
        Do While ItemName <> " " And ItemName <> Empty
              i = i + 1
Range("A:A").Find("Материал").Select
Rows(ActiveCell.Row).Cut Sheets("Материалы-дата").Cells(Sheets("Материалы-дата").Rows.count, "A").End(xlUp).Offset(1)
       Loop
End Sub
[/vba]

Ошибка в строке
Range("A:A").Find("Материал").Select

При этом перенос строк работает.
[moder]Дайте теме более конкретное название в соответствии с Правилами форума[/moder]


Сообщение отредактировал x0r - Четверг, 28.05.2015, 14:57
 
Ответить
СообщениеПриветствую!

Поломался простой макрос, не могу понять как исправить. Выдаёт ошибку object variable or with block variable not set
Суть макроса - нахождение ячейки и перенос всей строки на другой лист.

[vba]
Код
Sub MoveMat()
Dim i As Integer
Dim ItemName
        i = 1
        ItemName = Sheets("123").Cells(i, 1)
        Do While ItemName <> " " And ItemName <> Empty
              i = i + 1
Range("A:A").Find("Материал").Select
Rows(ActiveCell.Row).Cut Sheets("Материалы-дата").Cells(Sheets("Материалы-дата").Rows.count, "A").End(xlUp).Offset(1)
       Loop
End Sub
[/vba]

Ошибка в строке
Range("A:A").Find("Материал").Select

При этом перенос строк работает.
[moder]Дайте теме более конкретное название в соответствии с Правилами форума[/moder]

Автор - x0r
Дата добавления - 28.05.2015 в 14:36
_Boroda_ Дата: Четверг, 28.05.2015, 15:05 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
У Вас просто нет в столбце А значения "Материал". Макрос его не находит и дает ошибку.
В смысл Вашего кода не вникал, просто повесил пропуск ошибки
[vba]
Код
Sub MoveMat()
      Dim i As Integer
      Dim ItemName
          i = 1
          ItemName = Sheets("123").Cells(i, 1)
          Do While ItemName <> " " And ItemName <> Empty
              i = i + 1
              On Error Resume Next
              Rows(Range("A:A").Find("Материал").Row).Cut Sheets("Материалы-дата").Cells(Sheets("Материалы-дата").Rows.Count, "A").End(xlUp).Offset(1)
          Loop
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеУ Вас просто нет в столбце А значения "Материал". Макрос его не находит и дает ошибку.
В смысл Вашего кода не вникал, просто повесил пропуск ошибки
[vba]
Код
Sub MoveMat()
      Dim i As Integer
      Dim ItemName
          i = 1
          ItemName = Sheets("123").Cells(i, 1)
          Do While ItemName <> " " And ItemName <> Empty
              i = i + 1
              On Error Resume Next
              Rows(Range("A:A").Find("Материал").Row).Cut Sheets("Материалы-дата").Cells(Sheets("Материалы-дата").Rows.Count, "A").End(xlUp).Offset(1)
          Loop
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 28.05.2015 в 15:05
Pelena Дата: Четверг, 28.05.2015, 15:10 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 19196
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel
По-моему, вот эта строка должна быть в цикле
[vba]
Код
ItemName = Sheets("123").Cells(i, 1)
[/vba]
С файлом было бы понятнее


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПо-моему, вот эта строка должна быть в цикле
[vba]
Код
ItemName = Sheets("123").Cells(i, 1)
[/vba]
С файлом было бы понятнее

Автор - Pelena
Дата добавления - 28.05.2015 в 15:10
x0r Дата: Четверг, 28.05.2015, 15:12 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

По идее макрос должен искать до тех пор, пока в столбце А все ячейки будут пустые (там только слово Материал)
Добавляю
[vba]
Код
If Range("A:A") Is Nothing Then Exit Sub
[/vba]
все равно ошибка
[moder]Вы лучше файл добавьте


Сообщение отредактировал _Boroda_ - Четверг, 28.05.2015, 15:14
 
Ответить
СообщениеПо идее макрос должен искать до тех пор, пока в столбце А все ячейки будут пустые (там только слово Материал)
Добавляю
[vba]
Код
If Range("A:A") Is Nothing Then Exit Sub
[/vba]
все равно ошибка
[moder]Вы лучше файл добавьте

Автор - x0r
Дата добавления - 28.05.2015 в 15:12
KSV Дата: Четверг, 28.05.2015, 15:13 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
А разве это "мудреный" код не упадет в замкнутый цикл?
Судя по условию
он либо не войдет в цикл, либо и будет его гонять, пока не вывалится с ошибкой


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеА разве это "мудреный" код не упадет в замкнутый цикл?
Судя по условию
он либо не войдет в цикл, либо и будет его гонять, пока не вывалится с ошибкой

Автор - KSV
Дата добавления - 28.05.2015 в 15:13
x0r Дата: Четверг, 28.05.2015, 15:18 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Приложил файл
К сообщению приложен файл: 7655593.xlsm (39.9 Kb)
 
Ответить
СообщениеПриложил файл

Автор - x0r
Дата добавления - 28.05.2015 в 15:18
_Boroda_ Дата: Четверг, 28.05.2015, 15:25 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Такой вариант
[vba]
Код
Sub MoveMat()
     Application.ScreenUpdating = 0
     r1_ = Range("A" & Rows.Count).End(xlUp).Row
     For i = 1 To r1_
         If Range("A" & i) = "Материал" Then
             Rows(i).Cut Sheets("Материалы-дата").Cells(Sheets("Материалы-дата").Rows.Count, "A").End(xlUp).Offset(1)
         End If
     Next i
     Application.ScreenUpdating = 1
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТакой вариант
[vba]
Код
Sub MoveMat()
     Application.ScreenUpdating = 0
     r1_ = Range("A" & Rows.Count).End(xlUp).Row
     For i = 1 To r1_
         If Range("A" & i) = "Материал" Then
             Rows(i).Cut Sheets("Материалы-дата").Cells(Sheets("Материалы-дата").Rows.Count, "A").End(xlUp).Offset(1)
         End If
     Next i
     Application.ScreenUpdating = 1
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 28.05.2015 в 15:25
x0r Дата: Четверг, 28.05.2015, 15:28 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

_Boroda_, Спасибо, теперь работает!
 
Ответить
Сообщение_Boroda_, Спасибо, теперь работает!

Автор - x0r
Дата добавления - 28.05.2015 в 15:28
Мир MS Excel » Вопросы и решения » Вопросы по VBA » object variable or with block variable not set (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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