powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Программирование на VBA
25 сообщений из 106, страница 1 из 5
Программирование на VBA
    #36354449
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Подскажите, плиз!
Имеется макрос, который выделяет отдельные не пустые строки по заданному условию (смотри ниже).

Выходит ошибка Run-time error '1004' Method 'Range' of object '_Global' failed.

Причем если заполнено 27 строк, то все работает, а если более, то нет.
Не пойму в чем дело. :(

Код макроса

Sub Запускаем_макрос()
Dim ЕдИзм, КолвоВсего, Исх, ДатаЗаявки, Подразделение, НаправлениеРасхода, НаправлениеДеят, СтатусЗаявки As String
Dim nResult As Integer

'выделяем все не пустые позиции
If ActiveSheet.Name = "Годовая заявка" Then


For rwIndex = 10 To 100
ЕдИзм = Range("$E$" & rwIndex).Value
КолвоВсего = Range("$F$" & rwIndex).Value
Исх = Range("$U$" & rwIndex).Value
ДатаЗаявки = Range("$V$" & rwIndex).Value
Подразделение = Range("$AA$" & rwIndex).Value
НаправлениеРасхода = Range("$AB$" & rwIndex).Value
НаправлениеДеят = Range("$AC$" & rwIndex).Value
СтатусЗаявки = Range("$AG$" & rwIndex).Value


If ЕдИзм <> "" And КолвоВсего <> "" And Исх <> "" And ДатаЗаявки <> "" And Подразделение <> "" And НаправлениеРасхода <> "" And НаправлениеДеят <> "" And СтатусЗаявки <> "" Then
Range(Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex).Select
ActiveWorkbook.Names.Add Name:="request_item", RefersToR1C1:=Range(Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex)

End If
Next rwIndex
End If
End Sub
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354475
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала запостим правильно, чтобы получше рассмотреть:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Sub Запускаем_макрос()
Dim ЕдИзм, КолвоВсего, Исх, ДатаЗаявки, Подразделение, НаправлениеРасхода, НаправлениеДеят, СтатусЗаявки As String
Dim nResult As Integer

'выделяем все не пустые позиции
If ActiveSheet.Name = "Годовая заявка" Then


For rwIndex =  10  To  100 
ЕдИзм = Range("$E$" & rwIndex).Value
КолвоВсего = Range("$F$" & rwIndex).Value
Исх = Range("$U$" & rwIndex).Value
ДатаЗаявки = Range("$V$" & rwIndex).Value
Подразделение = Range("$AA$" & rwIndex).Value
НаправлениеРасхода = Range("$AB$" & rwIndex).Value
НаправлениеДеят = Range("$AC$" & rwIndex).Value
СтатусЗаявки = Range("$AG$" & rwIndex).Value


If ЕдИзм <> "" And КолвоВсего <> "" And Исх <> "" And ДатаЗаявки <> "" And Подразделение <> "" And НаправлениеРасхода <> "" And НаправлениеДеят <> "" And СтатусЗаявки <> "" Then
Range(Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex).Select
ActiveWorkbook.Names.Add Name:="request_item", RefersToR1C1:=Range(Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex)

End If
Next rwIndex
End If
End Sub
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354477
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на какой строке выходит ошибка?
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354482
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K_Aida,

Как я понял ошибка просиходит в строке
Код: plaintext
1.
Range(Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex).Select
Я думаю она связанна с ограничением на объединение нескольких диапазонов.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354491
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

ошибка выходит на строке
Range(Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex).Select
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354497
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon PlayerЯ думаю она связанна с ограничением на объединение нескольких диапазонов.

Гм. Ручками получается добавить гораздо больше, чем 27.

Тут:
Код: plaintext
1.
Range(Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex).Select
ActiveWorkbook.Names.Add Name:="request_item", RefersToR1C1:=Range(Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex)

Вы уже добавили в Selection.Address новый диапазон, зачем его еще раз добавлять? Попробуйте убрать, для начала, вдруг в этом дело....
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354501
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex

и чему это будет равно?
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354529
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Вторая сторчка (смотрите ниже), это присвоение имени "request_item" выделенной области.
ActiveWorkbook.Names.Add Name:="request_item", RefersToR1C1:=Range(Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex)

То есть,сначала идет выделение области, а потом выделенный блок присваивается имени request_item.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354535
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProГм. Ручками получается добавить гораздо больше, чем 27.
Я попробовал руками выделял мышкой несвязанные диапазоны. В результате у меня получилось создать имя ссылающееся на 22 диапазона. При добавлении 23 он не добавляется, ошибки при этом не выдается.
Могу предположить, что главное даже не количество диапазонов, а главное общая длина строки, которая обозначает этот диапазон. Скорее всего оно ограничено 255 символами.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354538
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,

выделение строк.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354542
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K_Aida,

Всегда полностью квалифицируйте Ваши ранги, и Бог вас не оставит. Пишите, с какого он листа, с какой книги, и сразу все устаканится.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354548
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon PlayerЯ попробовал руками выделял мышкой несвязанные диапазоны. В результате у меня получилось создать имя ссылающееся на 22 диапазона. При добавлении 23 он не добавляется, ошибки при этом не выдается.Точнее имя то добавляется, но оно попрежнему указывает лишь на 22 первых диапазона, а дальше обрезает.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354553
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon Player,

вы что предложите, чтобы работало?
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354565
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K_AidaShocker.Pro,

Вторая сторчка (смотрите ниже), это присвоение имени "request_item" выделенной области.
ActiveWorkbook.Names.Add Name:="request_item", RefersToR1C1:=Range(Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex)

То есть,сначала идет выделение области, а потом выделенный блок присваивается имени request_item.

в строке
Range(Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex).Select

вы добавляете новый диапазон к Selection.Address. И к моменту выполнения следующей строки он УЖЕ СОДЕРЖИТ добавленный диапазон и добавлять его второй раз не нужно. Достаточно:

ActiveWorkbook.Names.Add Name:="request_item", RefersToR1C1:=Range(Selection.Address)

И вообще, закомментируйте эту строку для начала
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354570
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Ага, я поняла вас.

Но вообще я уже почти все убрала, у меня только и осталось одно выделение.
Все равно не работает. :(
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354575
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K_Aida,

дайте файл
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354597
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K_AidaDjon Player,
вы что предложите, чтобы работало?
Если диапазоны абсолютно несвязанны, и моё предположение об ограничении на количество знаком в адресе имени верно, то тут предложить нечего, надо менять концепцию программы, определяться, для чего это вобще нужно, может и не нужно.
Если некоторые диапазоны имеют общую границу и два диапазона можно заменить одним, то надо заменять.
Например если выделены участки A1:U1,A2:U2,A3:U3,A4:U4, то вместо такого диапазона можно написать один большой диапазон A1:U4.
Но повторюсь, что если диапазоны все не связанны, тут надо менять концепцию.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354614
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Вам на почту что ли отправить, да?
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354662
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K_AidaShocker.Pro,

Вам на почту что ли отправить, да?

Сюда положите, пусть все думают
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354783
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

:) Он большой уж больно не публикуется, а вам я отправила
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354788
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Че-то нету ничего
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354816
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

сюда же, да?
zhelezo@inbox.ru
сейчас еще раз отправлю вам
...
Рейтинг: 0 / 0
Программирование на VBA
    #36354826
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нету ничего

положите на файлообменку и дайте ссылку
...
Рейтинг: 0 / 0
Программирование на VBA
    #36355294
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще просьба - называйте темы по существу. Вы всего две темы создали:
Программирование на VBA
и
программирование на VBA

очень информативно!

Почитайте правила форума.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36355517
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

вот файл "Макрос_выделение_строк.xls" http://www.sharemania.ru/0246649
макрос срабатывает при нажатии на кнопку "F10".
...
Рейтинг: 0 / 0
25 сообщений из 106, страница 1 из 5
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Программирование на VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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