Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Данная команда неприменима для несвязанных диапазонов EXCEL / 14 сообщений из 14, страница 1 из 1
26.10.2010, 20:16
    #36921390
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данная команда неприменима для несвязанных диапазонов EXCEL
Всем привет! Написал небольшую процедуру, которая предлагает пользователю выбрать диапазон на одном листе Excel и вставить его в новый лист. Выделение и копирование диапазона происходит удачно если пользователь выделил связанный диапазон, например $A:$A;$C:$C;$E:$E.
А если пользователь выделил к примеру такой диапазон ($A:$A;$C$2:$C$10), то никакого копирования не происходит, а выдается следующая ошибка "Данная команда неприменима для несвязанных диапазонов" . Как через VBA проверить является ли диапазон связанным или нет и если нет, то вернуть пользователя в программку для ввода правильного диапазона. Копирования несвязанного диапазона мне не нужно.
...
Рейтинг: 0 / 0
26.10.2010, 22:45
    #36921565
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данная команда неприменима для несвязанных диапазонов EXCEL
andMegaM,

Код: plaintext
1.
2.
If Selection.Areas.Count >  1  then
msgbox "Можно выделять только несвязанный диапазон": Exit Sub
End if
...
Рейтинг: 0 / 0
27.10.2010, 10:40
    #36922104
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данная команда неприменима для несвязанных диапазонов EXCEL
Спасибо! это как раз то, что мне нужно
...
Рейтинг: 0 / 0
27.10.2010, 10:45
    #36922120
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данная команда неприменима для несвязанных диапазонов EXCEL
Извиняюсь, я немного поторопился с выводами. Если выделить диапазон $A:$A;$C:$C;$E:$E, то
авторSelection.Areas.Count будет равет 3 (трем). т.е. такой вариант не решает моей проблемы
...
Рейтинг: 0 / 0
27.10.2010, 11:27
    #36922238
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данная команда неприменима для несвязанных диапазонов EXCEL
andMegaMИзвиняюсь, я немного поторопился с выводами. Если выделить диапазон $A:$A;$C:$C;$E:$E, то
авторSelection.Areas.Count будет равет 3 (трем). т.е. такой вариант не решает моей проблемыПравильно. Так ведь диапазоны-то несвязанные. Вы про это писали. Если нет - выкладывайте пример и посмотрим, что там можно сделать. Только условия тоже озвучьте - а то в прошлый раз Вы написали: "Как через VBA проверить является ли диапазон связанным или нет". Я Вам ответил, но под Вашу задачу оказывается не совсем подходит.
...
Рейтинг: 0 / 0
27.10.2010, 11:46
    #36922280
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данная команда неприменима для несвязанных диапазонов EXCEL
Вот процедура копирования одного диапазона с одного листа на другой лист
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub TestCopy()
Dim r  As Range
Dim t  As Worksheet
Dim res  As Worksheet

Set t = Worksheets("Данные")
Set res = Worksheets("Результат копирования")

t.Activate
Set r = Application.InputBox(prompt:="Выделите диапазон для копирования:", Title:="Копирование", Type:= 8 )

r.Copy res.Range("A1")
End Sub

Если выделить диапазон $A:$A;$C:$C;$E:$E, то копирование происходит, а если $A:$A;$C$2:$C$10,
то появляется ошибка '1004' ("Данная команда неприменима для несвязанных диапазонов" .)
...
Рейтинг: 0 / 0
27.10.2010, 12:29
    #36922416
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данная команда неприменима для несвязанных диапазонов EXCEL
Так бы сразу и сказали. Копируйте любые:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub TestCopy()
    Dim r As Range, rArea As Object, li As Long
    Dim t As Worksheet
    Dim res As Worksheet
    Set t = Worksheets("Данные")
    Set res = Worksheets("Результат копирования")

    t.Activate
    Set r = Application.InputBox(prompt:="Выделите диапазон для копирования:", Title:="Копирование", Type:= 8 )
    For Each rArea In r.Areas
        rArea.Copy res.Range("A1").Offset(, li): li = li +  1 
    Next rArea
End Sub
...
Рейтинг: 0 / 0
27.10.2010, 12:46
    #36922477
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данная команда неприменима для несвязанных диапазонов EXCEL
Спасибо. Возможно это мне пригодится в будущем, но сейчас мне необходимо запретить копирование несвязанных диапазонов. Мне нужно отправить пользователя перевыбрать диапазон, если диапазон не является связанным.
...
Рейтинг: 0 / 0
27.10.2010, 13:15
    #36922593
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данная команда неприменима для несвязанных диапазонов EXCEL
andMegaMСпасибо. Возможно это мне пригодится в будущем, но сейчас мне необходимо запретить копирование несвязанных диапазонов. Мне нужно отправить пользователя перевыбрать диапазон, если диапазон не является связанным.Вы уже определитесь тогда. Диапазон либо несвязанный либо единый. А то, что Вы пишите:
Если выделить диапазон $A:$A;$C:$C;$E:$E, то Selection.Areas.Count будет равет 3 (трем). т.е. такой вариант не решает моей проблемыА чему он должен быть равен? Это же НЕСВЯЗАННЫЙ диапазон с тремя областями. Тогда проверяйте каждую область из всего несвязанного на предмет одинакового кол-во строк. Но и там не все так просто. А если пользователь выделит несмежные строки? Значит надо делать проверку на то, выделены строки или столбцы.

Но я все же непонимаю, чем обусловлено такое желание.
...
Рейтинг: 0 / 0
27.10.2010, 13:35
    #36922666
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данная команда неприменима для несвязанных диапазонов EXCEL
Но я все же не понимаю, чем обусловлено такое желание.
Результатом копирования таким образом как этот
Код: plaintext
1.
2.
    For Each rArea In r.Areas
        rArea.Copy res.Range("A1").Offset(, li): li = li +  1 
    Next rArea
является бессмысленная информация. У меня данные след типа
Дата , Название организации, Адрес, Телефон, Контактное лицо ,Сумма закупки

Нужно выделить некие строки, например за несколько дней, вставить на новый лист, чтобы потом вывести на печать. Если произвести копирование вышеприведенным образом, то получим что в определенный день закупок вообще не было или сумма закупки будет не на ту дату.
PS
Я сам случайно обнаружил ошибку копирования в тот момент когда при нажатой кнопке Shift кликнул на ненужную мне ячейку.
...
Рейтинг: 0 / 0
27.10.2010, 17:28
    #36923646
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данная команда неприменима для несвязанных диапазонов EXCEL
andMegaM,

Я взял за основу именно Ваш алгоритм, при котором все данные начинали вставляться в А1 другого листа.
Вы не хотите ни толком пояснить, чем мешает запрещение копирования несмежных диапзаонов вообще, ни пояснить зачем и ГЛАВНОЕ КАК должно происходить копирование целых столбцов, по Вашему мнению.

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub TestCopy()
    Dim r As Range, rArea As Object
    Dim t As Worksheet
    Dim res As Worksheet
    Set t = Worksheets( 1 )
    Set res = Worksheets( 2 )

    t.Activate
    Set r = Application.InputBox(prompt:="Выделите диапазон для копирования:", Title:="Копирование", Type:= 8 )
    For Each rArea In r.Areas
    Debug.Print rArea.Address
        rArea.Copy res.Range(rArea.Address)
    Next rArea
End Sub
...
Рейтинг: 0 / 0
28.10.2010, 07:21
    #36924560
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данная команда неприменима для несвязанных диапазонов EXCEL
[quot Вы не хотите ни толком пояснить, чем мешает запрещение копирования несмежных диапзаонов вообще, ни пояснить зачем и ГЛАВНОЕ КАК должно происходить копирование целых столбцов, по Вашему мнению.[/quot]

Не должно происходить копирование в том случае если :
Выделена какая либо колонка (строка) + некий диапазон, не являющийся целой колонкой (строкой)
т.е. диапазон $A:$A;$B$2:$B$10 не должен копироваться

Копирование должно происходить если:
1. Выделена целиком колонка (строка) , а также набор целых колонок (строк) т.е. $A:$A;$C:$C;$D:$D ($4:$7;$11:$14)

2. В том случае если диапазоны "похожи" (не знаю как правильно назвать такие диапазоны), например
$A$1:$B$2;$A$5:$B$10.
...
Рейтинг: 0 / 0
30.10.2010, 16:59
    #36929242
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данная команда неприменима для несвязанных диапазонов EXCEL
чей-то мне подсказывает, что тут 2 варианта:
- или пользователь понимает что делает и тогда выделяет как правильно, и даже если выскочит ошибка, то сделает все по-новой.
- или если предъявляются особые требования, то тогда не нужно давать пользователю выбирать диапазоны вообще. Нужно сразу на форму выводить список строк и стоблцов базы и давать возможность галочки поставить напроив нужных и скопировать их по алгоритму.
...
Рейтинг: 0 / 0
30.10.2010, 17:00
    #36929243
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данная команда неприменима для несвязанных диапазонов EXCEL
куда естественнее 2-й вариант, причем силы потраченные вами на отлов ошибки описанной выше сходные с силами, которые могут быть потрачены на реализацию этого варианта.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Данная команда неприменима для несвязанных диапазонов EXCEL / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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