Доброго дня!!! Вроде задача плевая совершенно, а что то никак))) Задача: В диапазоне А2:А1000 выделил любой диапазон (может и одну одну ячейку) и выделенное копируется (попадает в буфер обмена). С одной ячейкой и весь диапазон до последней заполненной справился, с выделенным мышью диапазоном никак)))
написал: с выделенным диапазоном ничего не происходит
Проверил еще раз - у меня копируются все выделенные ячейки (причем независимо от того как выделять - мышкой или с клавиатуры). С учетом вашего условия на диапазон я бы записал так:
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Application
.CutCopyMode = False
If .Intersect(Range("A2:A1000"), Target) Is Nothing Then Exit Sub
.Intersect(Range("A2:A1000"), Target).Copy
End With
End Sub
Попробую все-таки объяснить:) Target - это выделенный диапазон (в данном случае это то что осталось выделенным после того как отпустили левую кнопку мышки). И если выделено более одной ячейки - эта строка говорит о том, что надо выйти из процедуры и дальнейшие действия не выполнять. Соответственно, никакой другой (прописанный в коде) диапазон значения не имеет
webley, В первом коде работает выделение строк (цветом для удобства) в диапазоне В2:Н1000, в случае с копированием в этой теме - - код другой и диапазон А2:А1000 и что, всё равно прекращает работу кода? Я думал, что действует только на то код, в котором прописан Exit Sub... Спасибо, что тратите на меня время)))!!!
Не видя Ваш код, конечно трудно сказать что-то с полной уверенностью, но скорее всего у Вас выполнение кода где-то доходит то этой строки (If Target.Count > 1 Then Exit Sub) и при выделении нескольких ячеек происходит выход из процедуры
webley, Доброго дня! А не подскажите, как реализовать такую задачу (думаю не сложную, но у самого не получилось): в ячейке J1 ставлю цифру (например 6), и тогда в коде
Код
If Not Intersect(Target, Range("A2:A1000")) Is Nothing Then 'копирует диапазон
If ActiveSheet.FilterMode Then
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells(2, 1), Cells(LastRow, 1)).Copy
Else
Selection.Copy
End If
End If
прописать, что выделение будет от активной ячейки диапазона А2:А1000 и на 6 строк вниз (при условии выключенного фильтра). Спасибо!!!
RAN, Ігор Гончаренко, Доброго дня! Вопрос к предыдущим сообщениям 14, 15 - например ставлю в ячейку J1 цифру 9, а так как в данном диапазоне есть скрытые строки, то по факту копирует например всего 3 строки из 9-ти (т.е. меньше, чем заявлено). Подскажите, как дописать/изменить код, чтобы копировались только видимые ячейки (т.е. заявленное количество)? Спасибо!