Как скопировать данные двойным щелчком мыши по определенной ячейке одного листа на другой лист - PullRequest
0 голосов
/ 11 февраля 2009

Я записываю требования того, что я хочу сделать, используя макрос в Excel:

  • У меня есть рабочая тетрадь с 4 листами: SourceSheet, где я сохраняю свою базу данных, TargetSheet, куда я хочу отправить некоторые продукты базы данных для выполнения некоторых вычислений, таблицу результатов и InfoSheet.
  • Если пользователь дважды щелкает ячейку SourceSheet, которая принадлежит столбец А, например A8, затем данные ячеек от A8 до F8 должны быть скопированы в ячейки C18-H18 таблицы TargetSheet, а ячейка J8 таблицы sourceSheet должна быть скопирована в ячейку B18 таблицы TargetSheet. Если ячейки с B18 по H18 таблицы TargetSheet заняты, то данные должны быть скопированы на одну строку ниже.
  • Если пользователь дважды щелкает в ячейке SourceSheet, которая не принадлежат колонке А ничего не должно случиться.
  • Если пользователь дважды щелкнет на любом другом листе, больше ничего не произойдет.

У меня проблемы с тем, что написано жирным шрифтом выше. Я знаю, что должен обязательно использовать следующее:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub

Поэтому я попытался что-то вроде следующего в SourceSheet (но безуспешно :()

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Range("ActiveCell:(ActiveCell.Offset(0, 5))").Copy Worksheets("TargetSheet ").Range("C2:G2")
    ActiveCell.Offset(0, 9).Copy Worksheets("TargetSheet ").Range("B18")
End Sub

Я новичок в VBA, поэтому любая помощь будет оценена. Заранее спасибо.

1 Ответ

1 голос
/ 11 февраля 2009

Вам необходимо проверить, действительно ли вы дважды щелкнули в пределах диапазона A: A (= столбец 1).


Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

    If ActiveCell.Column = 1 Then
        MsgBox "Double click on A:A range."
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...