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

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

Выходит ошибка 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
08.12.2009, 15:22
    #36354475
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование на VBA
Для начала запостим правильно, чтобы получше рассмотреть:
Код: 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
08.12.2009, 15:22
    #36354477
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование на VBA
на какой строке выходит ошибка?
...
Рейтинг: 0 / 0
08.12.2009, 15:24
    #36354482
Djon Player
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование на VBA
K_Aida,

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

ошибка выходит на строке
Range(Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex).Select
...
Рейтинг: 0 / 0
08.12.2009, 15:29
    #36354497
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование на VBA
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
08.12.2009, 15:30
    #36354501
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование на VBA
Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex

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

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

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

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

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

вы что предложите, чтобы работало?
...
Рейтинг: 0 / 0
08.12.2009, 15:47
    #36354565
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование на VBA
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
08.12.2009, 15:49
    #36354570
K_Aida
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование на VBA
Shocker.Pro,

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

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

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

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

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

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

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

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

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

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

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

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


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