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

Код: plaintext
1.
2.
If Selection.Areas.Count >  1  then
msgbox "Можно выделять только несвязанный диапазон": Exit Sub
End if
...
Рейтинг: 0 / 0
Данная команда неприменима для несвязанных диапазонов EXCEL
    #36922104
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! это как раз то, что мне нужно
...
Рейтинг: 0 / 0
Данная команда неприменима для несвязанных диапазонов EXCEL
    #36922120
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, я немного поторопился с выводами. Если выделить диапазон $A:$A;$C:$C;$E:$E, то
авторSelection.Areas.Count будет равет 3 (трем). т.е. такой вариант не решает моей проблемы
...
Рейтинг: 0 / 0
Данная команда неприменима для несвязанных диапазонов EXCEL
    #36922238
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andMegaMИзвиняюсь, я немного поторопился с выводами. Если выделить диапазон $A:$A;$C:$C;$E:$E, то
авторSelection.Areas.Count будет равет 3 (трем). т.е. такой вариант не решает моей проблемыПравильно. Так ведь диапазоны-то несвязанные. Вы про это писали. Если нет - выкладывайте пример и посмотрим, что там можно сделать. Только условия тоже озвучьте - а то в прошлый раз Вы написали: "Как через VBA проверить является ли диапазон связанным или нет". Я Вам ответил, но под Вашу задачу оказывается не совсем подходит.
...
Рейтинг: 0 / 0
Данная команда неприменима для несвязанных диапазонов EXCEL
    #36922280
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот процедура копирования одного диапазона с одного листа на другой лист
Код: 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
Данная команда неприменима для несвязанных диапазонов EXCEL
    #36922416
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так бы сразу и сказали. Копируйте любые:

Код: 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
Данная команда неприменима для несвязанных диапазонов EXCEL
    #36922477
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Возможно это мне пригодится в будущем, но сейчас мне необходимо запретить копирование несвязанных диапазонов. Мне нужно отправить пользователя перевыбрать диапазон, если диапазон не является связанным.
...
Рейтинг: 0 / 0
Данная команда неприменима для несвязанных диапазонов EXCEL
    #36922593
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andMegaMСпасибо. Возможно это мне пригодится в будущем, но сейчас мне необходимо запретить копирование несвязанных диапазонов. Мне нужно отправить пользователя перевыбрать диапазон, если диапазон не является связанным.Вы уже определитесь тогда. Диапазон либо несвязанный либо единый. А то, что Вы пишите:
Если выделить диапазон $A:$A;$C:$C;$E:$E, то Selection.Areas.Count будет равет 3 (трем). т.е. такой вариант не решает моей проблемыА чему он должен быть равен? Это же НЕСВЯЗАННЫЙ диапазон с тремя областями. Тогда проверяйте каждую область из всего несвязанного на предмет одинакового кол-во строк. Но и там не все так просто. А если пользователь выделит несмежные строки? Значит надо делать проверку на то, выделены строки или столбцы.

Но я все же непонимаю, чем обусловлено такое желание.
...
Рейтинг: 0 / 0
Данная команда неприменима для несвязанных диапазонов EXCEL
    #36922666
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но я все же не понимаю, чем обусловлено такое желание.
Результатом копирования таким образом как этот
Код: 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
Данная команда неприменима для несвязанных диапазонов EXCEL
    #36923646
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Данная команда неприменима для несвязанных диапазонов EXCEL
    #36924560
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[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
Данная команда неприменима для несвязанных диапазонов EXCEL
    #36929242
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чей-то мне подсказывает, что тут 2 варианта:
- или пользователь понимает что делает и тогда выделяет как правильно, и даже если выскочит ошибка, то сделает все по-новой.
- или если предъявляются особые требования, то тогда не нужно давать пользователю выбирать диапазоны вообще. Нужно сразу на форму выводить список строк и стоблцов базы и давать возможность галочки поставить напроив нужных и скопировать их по алгоритму.
...
Рейтинг: 0 / 0
Данная команда неприменима для несвязанных диапазонов EXCEL
    #36929243
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
куда естественнее 2-й вариант, причем силы потраченные вами на отлов ошибки описанной выше сходные с силами, которые могут быть потрачены на реализацию этого варианта.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Данная команда неприменима для несвязанных диапазонов EXCEL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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