Страницы: 1
RSS
При помощи Worksheet_SelectionChange скопировать диапазон, выделенный мышью
 
Доброго дня!!!
Вроде задача плевая совершенно, а что то никак))) Задача:
В диапазоне А2:А1000 выделил любой диапазон (может и одну одну ячейку) и выделенное копируется (попадает в буфер обмена).
С одной ячейкой и весь диапазон до последней заполненной справился, с выделенным мышью диапазоном никак)))  
Изменено: evg_glaz - 14.06.2023 15:22:28
 
Добрый день. Может так?
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Target.Copy
End Sub
 
webley, таким методом можно скопировать только одну ячейку, с выделенным диапазоном ничего не происходит(
 
Цитата
написал:
с выделенным диапазоном ничего не происходит
Проверил еще раз - у меня копируются все выделенные ячейки (причем независимо от того как выделять - мышкой или с клавиатуры).  С учетом вашего условия на диапазон я бы записал так:
Код
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
 
webley, Спасибо!!!! Как надо!
Нашел косяк))) - в предыдущем коде строка влияет:
Код
If Target.Count > 1 Then Exit Sub
хотя не ясно почему - диапазон работы предыдущего макроса совсем другой! Теперь
Код
 Target.Copy
работает. Мне не ясно, но всё получилось. Спасибо еще раз!!!)
А не подскажете как дописать, чтобы если фильтр включен, то
Код
Exit Sub
иначе (Else) - работает копирование
 
Цитата
написал:
хотя не ясно почему - диапазон работы предыдущего макроса совсем другой
это то как раз ясно - эта строка говорит о том, что если выделено более одной ячейки то дальнейший код не выполняется

Цитата
написал:
А не подскажете как дописать, чтобы если фильтр включен, то
Код
If ActiveSheet.FilterMode Then Exit Sub
Изменено: webley - 14.06.2023 16:52:13
 
webley,
Цитата
это то как раз ясно -
Дк строка из другого кода в котором другой диапазон и код, где эта строка не касается кода копирования! Или чего не понимаю... :oops:  :D
Код
If ActiveSheet.FilterMode Then Exit Sub
Большое спасибо!!!
 
Цитата
написал:
Или чего не понимаю...
Попробую все-таки объяснить:) Target - это выделенный диапазон (в данном случае это то что осталось выделенным после того как отпустили левую кнопку мышки).  И если выделено более одной ячейки - эта строка говорит о том, что надо выйти из процедуры и дальнейшие действия не выполнять. Соответственно, никакой другой (прописанный в коде) диапазон значения не имеет
 
webley, В первом коде работает выделение строк (цветом для удобства) в диапазоне В2:Н1000, в случае с копированием в этой теме - - код другой и диапазон А2:А1000 и что, всё равно прекращает работу кода?
Я думал, что действует только на то код, в котором прописан Exit Sub...
Спасибо, что тратите на меня время)))!!!
Изменено: evg_glaz - 14.06.2023 17:32:57
 
Не видя Ваш код, конечно трудно сказать что-то с полной уверенностью, но скорее всего у Вас выполнение кода где-то доходит то этой строки (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 строк вниз (при условии выключенного фильтра).
Спасибо!!!
 
 
Код
Rows(ActiveCell.Row).Resize(6).Select
 
RAN, спасибо! Хтелось бв, чтобы количество строк смещения бралось из ячейки
Цитата
в ячейке J1 ставлю цифру (например 6),
 
Rows(ActiveCell.Row).Resize([J1]).Select
 
вот и напишите вместо 6 [j1]
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
RAN, Ігор Гончаренко, большое спасибо!!! Как всегда доходчиво и оперативно!
 
RAN, Ігор Гончаренко, Доброго дня! Вопрос к предыдущим сообщениям 14, 15 - например ставлю в ячейку J1 цифру 9, а так как в данном диапазоне есть скрытые строки, то по факту копирует например всего 3 строки из 9-ти (т.е. меньше, чем заявлено). Подскажите, как дописать/изменить код, чтобы копировались только видимые ячейки (т.е. заявленное количество)?
Спасибо!  
Страницы: 1
Наверх