powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / задача с циклами
15 сообщений из 15, страница 1 из 1
задача с циклами
    #38819994
lapochka2382
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый всем вечер!

я только в самом начале пути изучения VBA, но на работе дали задание написать макрос, помогите разобраться в написании кода, а именно с циклами.

1. есть лист "вспом" с номерами заказов в столбце В.
2. и есть лист "По_заказно" - здесь выводится информация по одному конкретному заказу (ячейка В5).

Задача состоит в том, чтобы перенести информацию с листа "По-заказно" с диапазона К3:BD3 на лист "вспом" в диапазон D:AW соответсвующего конкретному заказу.

т.е. механически это происходит так:
1. на листе "вспом" копируем ячейку B3
2. переходим на лист "По_заказно" и вставляем как значение скопированный номер заказа
3. в таблице ниже появляется необходимая информация по данному заказу, которая еще и дублируется в диапазон К3:BD3.
4. копируем этот диапазон К3:BD3
5. переходим на лист "вспом"
6. ищем соответствующий номер заказа
7. вставляем диапазон в ячейку D3.
и этот цикл нужно повторить для всех номеров заказов.
...
Рейтинг: 0 / 0
задача с циклами
    #38821677
lapochka2382
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
написала вот этот код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
With Лист15.Columns(2) 'берется лист15(вспом).столбец В(Номер Заказа)
   For i = 3 To .Cells(.Rows.Count).End(xlUp).Row 'для i= c 3 ячейки и до конца столбца с данными
     ActiveWorkbook.Sheets("вспом").Range(ActiveWorkbook.Sheets("вспом").Cells(i, 2), _
     ActiveWorkbook.Sheets("вспом").Cells(i.Rows.Count).End(xlUp).Row).Copy _
     Destination:=ActiveWorkbook.Sheets("По_заказно").Cells(2, 2)
   Next i
End With



но выдает ошибку
Run-time error '424': Object required

не могу найти, где после точки текст не распознает как объект?

Спасибо!
...
Рейтинг: 0 / 0
задача с циклами
    #38821727
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что такое Лист15?
Если вы заранее не объявили такую переменную, то обращайтесь к листу через Sheets - вы же ниже так и делаете
...
Рейтинг: 0 / 0
задача с циклами
    #38821743
lapochka2382
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

спасибо, переименовала..

снова выдает ошибку, но теперь такую:
Run-time error '1004': Application-defined or object-defined error
...
Рейтинг: 0 / 0
задача с циклами
    #38821748
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lapochka2382спасибо, переименовала..во что и как? нам угадывать?
...
Рейтинг: 0 / 0
задача с циклами
    #38821762
lapochka2382
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

извините, переименовала обращение к листу в строке
Код: vbnet
1.
With Лист15.Columns(2)



теперь стало так:
Код: vbnet
1.
With Sheets("вспом").Columns(2)



но у меня такое ощущение, что я что-то вот с этим перемудрила:
Код: vbnet
1.
2.
3.
4.
5.
For i = 3 To .Cells(.Rows.Count).End(xlUp).Row 'для i= c 3 ячейки и до конца столбца с данными
     ActiveWorkbook.Sheets("вспом").Range(ActiveWorkbook.Sheets("вспом").Cells(i, 2), _
     ActiveWorkbook.Sheets("вспом").Cells(Rows.Count, 2).End(xlUp).Row).Copy _
     Destination:=ActiveWorkbook.Sheets("По_заказно").Cells(2, 2)
 Next i



мне нужно с листа "вспом" поочередно копировать номера заказов, которые начинаются с ячейки B3
на лист "По_заказно" в ячейку B2.
...
Рейтинг: 0 / 0
задача с циклами
    #38821900
lapochka2382
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lapochka2382но у меня такое ощущение, что я что-то вот с этим перемудрила:
Код: vbnet
1.
2.
3.
4.
5.
For i = 3 To .Cells(.Rows.Count).End(xlUp).Row 'для i= c 3 ячейки и до конца столбца с данными
     ActiveWorkbook.Sheets("вспом").Range(ActiveWorkbook.Sheets("вспом").Cells(i, 2), _
     ActiveWorkbook.Sheets("вспом").Cells(Rows.Count, 2).End(xlUp).Row).Copy _
     Destination:=ActiveWorkbook.Sheets("По_заказно").Cells(2, 2)
 Next i



мне нужно с листа "вспом" поочередно копировать номера заказов, которые начинаются с ячейки B3
на лист "По_заказно" в ячейку B2.

Переписала свои премудрости, получилось так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim i As Long
     Dim x As Range


With Sheets("вспом").Columns(2) 'берется лист15(вспом).столбец В(Номер Заказа)
   For i = 3 To .Cells(.Rows.Count).End(xlUp).Row 'для i= c 3 ячейки и до конца столбца с данными
     Set x = Sheets("вспом").Columns(2).Find(.Cells(i))
           .Cells(i) = ActiveWorkbook.Sheets("вспом").Cells(x.Row, 2).Copy
           ActiveWorkbook.Sheets("По_заказно").Cells(2, 2).PasteSpecial Paste:=xlPasteValues
   Next i
End With



загвоздка теперь в том, что переменную х почему-то видит как true и проставляет слово ИСТИНА в ячейки листа "вспом", затирая тем самым номер заказа.
Почему может это происходить? Где я не так что написала?
Помогите, пожалуйста!
...
Рейтинг: 0 / 0
задача с циклами
    #38821905
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще в вашем случае для копирования значения ячейки достаточно
Код: vbnet
1.
Sheets("вспом").Cells(2, 2).Value=Sheets("По_заказно").Cells(3, 4).Value

и не надо ничего мудрить с Copy

ЗЫ: "Позаказно" пишется слитно
...
Рейтинг: 0 / 0
задача с циклами
    #38824098
lapochka2382
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Спасибо! но мне не просто нужно скопировать и вставить весь массив с одного листа на другой. Нужно с листа "вспом" взять один номер заказа, скопировать его в определенную ячейку второго листа, затем вернуться опять на лист "вспом" взять второй номер заказа и снова вставить его в определенную ячейку листа "По_заказно" и так перебрать весь столбик с номерами заказов на листе "вспом".
...
Рейтинг: 0 / 0
задача с циклами
    #38824126
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так копируйте. Я не говорю - "не используйте цикл". Я говорю - "не используйте Copy"
...
Рейтинг: 0 / 0
задача с циклами
    #38824141
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProА что такое Лист15?Вообще это документирование обращение к листу по его кодовому имени.
Чтобы убедиться можно создать новую книгу, создать обычный модуль и вписать процедуру:
Код: vbnet
1.
2.
3.
4.
Sub macro()
Sheets("Лист1").Cells(1, 1).Value = "Ячейка А1"
MsgBox Лист1.Cells(1, 1).Value
End Sub



Для анголязычных версий это обращение будет Sheet1
...
Рейтинг: 0 / 0
задача с циклами
    #38824180
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага
Но в приложенной книге не было листа с таким именем, потому мой совет в итоге помог
...
Рейтинг: 0 / 0
задача с циклами
    #38824865
lapochka2382
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем огромное спасибо за помощь!
все получилось!
...
Рейтинг: 0 / 0
задача с циклами
    #38825059
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНо в приложенной книге не было листа с таким именемБыло и есть :-)
...
Рейтинг: 0 / 0
задача с циклами
    #38825116
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу, блин, теперь понятно - у листа есть свойство "(Name)", а есть свойство "Name"
как-то не обращал внимания
век живи....
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / задача с циклами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]