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

Если вы уберете из макроса все знаки доллара $, то ошибка будет уже не на 27 строке, а на 31, что подтверждает мою мысль об ограничении на длину ссылки в имени в 255 знаков.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356019
Танцор Пасадобля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K_Aida
ошибка выходит на строке
Range(Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex).Select

ну так возможно переписать ее на типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
set sel = Nothing
цикл
...

If sel Is Nothing Then set sel = Range("A" & rwIndex & ":" & "AP" & rwIndex) Else set sel = Union(sel, Range("A" & rwIndex & ":" & "AP" & rwIndex))
sel.Select

...
Рейтинг: 0 / 0
Программирование на VBA
    #36356050
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Танцор ПасадобляK_Aida
ошибка выходит на строке
Range(Selection.Address + ",A" & rwIndex & ":" & "AP" & rwIndex).Select

ну так возможно переписать ее на типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
set sel = Nothing
цикл
...

If sel Is Nothing Then set sel = Range("A" & rwIndex & ":" & "AP" & rwIndex) Else set sel = Union(sel, Range("A" & rwIndex & ":" & "AP" & rwIndex))
sel.Select

Конкретно для этого примера использование UNION поможет лишь временно, но если количество строк будет разрастаться и строки будут идти не подряд, а с промежутками, то в конце концов всё равно всё упрется в 255 знаков.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356163
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon Player,

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

Вы все таки ответьте на вопрос, который задавался еще в другой ветке - ЗАЧЕМ вам выделение? Возможно можно всю проблему решить как-то иначе.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356286
Танцор Пасадобля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon PlayerКонкретно для этого примера использование UNION поможет лишь временно, но если количество строк будет разрастаться и строки будут идти не подряд, а с промежутками, то в конце концов всё равно всё упрется в 255 знаков.
что значит временно? огласите ограничения union
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356317
Танцор Пасадобля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K_AidaDjon Player,

спасибо большое за пример :) , но как раз возрастание строк будет обязательно, до тысяч и далее...
Вы считаете, это самый оптимальный вариант?
Не знаю что там считает Djon Player, но я считаю что оптимальный
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356475
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Танцор Пасадобля,

Спасибо вам за идею! :)
А вы тоже так думаете? (смотрите ниже)

"Конкретно для этого примера использование UNION поможет лишь временно, но если количество строк будет разрастаться и строки будут идти не подряд, а с промежутками, то в конце концов всё равно всё упрется в 255 знаков."
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356496
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Данный файл в поледующем будет загружаться в базу данных. Именно для этого и нужно выделение области. А так как пользователи всегда забывают обозначить область, то приходиться автоматизировать работу с файлом.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356554
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K_AidaShocker.Pro,

Данный файл в последующем будет загружаться в базу данных.

Если не поможет вариант с Union, тогда надо копать в следующую строну: создать чистый лист - скопировать туда в цикле нужные строки по любому условию и уже этот лист тащить в базу.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356678
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Танцор ПасадобляDjon PlayerКонкретно для этого примера использование UNION поможет лишь временно, но если количество строк будет разрастаться и строки будут идти не подряд, а с промежутками, то в конце концов всё равно всё упрется в 255 знаков.
что значит временно? огласите ограничения unionРечь не ограничении UNION, а ограничении длины ссылки имени, которой потом будет присваиваться диапазон адресов полученных UNION.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356704
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Танцор Пасадобля,

Мои слова подтвержаются таким простым примером.
При выполнении этого кода имя будет содержать ссылку не на 500 ячеек, а всего лишь на 43.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Option Explicit

Sub test()
 Dim i As Integer
 Dim sel As Range
 
 For i =  1  To  1000  Step  2 
  If sel Is Nothing Then
    Set sel = Cells(i,  1 )
   Else
    Set sel = Union(sel, Cells(i,  1 ))
  End If
  sel.Select
Next i

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

End Sub
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356791
Танцор Пасадобля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Player,
так и должно быть потому-что sel.Address это string
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356806
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Танцор ПасадобляDjon Player,
так и должно быть потому-что sel.Address это string

А что, разве String не 64кБ?
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356807
Танцор Пасадобля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Player,
в вашем тесте выделяется сколько строк? если больше 43 то почему?
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356831
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Танцор Пасадобля, Djon Player

Скажите, плиз, вот вариант, который предложил Танцор Пасадобля - хороший, но в действительности, не во всех случаях срабатывает. Попасться можно!!!

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

Лучше все-таки выкинуть нужные строки на другой лист/файл и потом их обрабатывать. Так будет надежнее.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356868
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Танцор ПасадобляDjon Player,
в вашем тесте выделяется сколько строк? если больше 43 то почему?

В моем тесте макрос выделяет 500 строк, но когда выделение присваивается имени, то в итоге имя содержит ссылки только на первые 43 выделенные ячейки.
И дело тут не в ограничении Range(sel.Address)

Можете попробовать запустить этот макрос, будут выделены 500 ячеек и потом вручную добавить имя, получатся те-же 43 ячейки.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356879
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K_AidaТанцор Пасадобля, Djon Player

Скажите, плиз, вот вариант, который предложил Танцор Пасадобля - хороший, но в действительности, не во всех случаях срабатывает. Попасться можно!!!

Вы можите предложить еще что-нибудь, пожалуйста! :)
Я предлагаю вам воспользоваться советом Shocker.Pro и либо как-то подкрасить нужные ячейки и после этого экспорт делать на основе цвета, либо скопировать на новый лист только нужные строки.
Ну а просто для выделения самих ячеек можно использовать UNION по совету Танцор Пасадобля.
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356912
Танцор Пасадобля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
ну значит там фиксированная...
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356913
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: K_Aida

А для чего определяется именовынный диапазон? Причем с одним и тем-же именем он переобъявляется каждый раз при
выполнении условий?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356931
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> Автор: K_Aida

А для чего определяется именовынный диапазон? Причем с одним и тем-же именем он переобъявляется каждый раз при
выполнении условий?




Видимо, экспорт работает с именованным диапазоном.

Я обратил внимание не эту ошибку в цикле, но разбирать не стали, ибо все равно не работает как надо :)
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356977
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Shocker.Pro
> Я обратил внимание не эту ошибку в цикле, но разбирать не стали, ибо все равно не работает как надо :)

Так может из-за этого и не работает? Может можно переделать экспорт на использование Range, или нескольких имен?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Программирование на VBA
    #36356986
K_Aida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

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

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

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

Не вижу смысла переноса данных на другой лист. Что здесь ,что на другом листе, все равно действия одни и те же, либо я вас не поняла.

На другом листе у вас не будет проблем с диапазоном. Вы выделите и поименуете данные одной кучей
...
Рейтинг: 0 / 0
25 сообщений из 106, страница 2 из 5
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Программирование на VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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