Введите следующий макрос событий в область кода рабочей таблицы Sheet2
:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim A As Range Set A = Range("A5:A10") If Intersect(Target, A) Is Nothing Then Exit Sub Cancel = True Application.EnableEvents = False Target.Copy Sheets("Sheet1").Range("C3") Application.EnableEvents = True End Sub
Обратите внимание, что код использует Sheet1, а не Sheet 1 . (измените это, если вы используете Sheet 1
)
Поскольку это код рабочего листа, его очень легко установить и использовать автоматически:
- щелкните правой кнопкой мыши имя вкладки в нижней части окна Excel
- выберите View Code - откроется окно VBE
- вставьте материал и закройте окно VBE
Если у вас есть какие-либо проблемы, сначала попробуйте на пробную версию.
Если вы сохраните книгу, макрос будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx
Чтобы удалить макрос:
- вызвать окна VBE, как указано выше
- очистить код
- закройте окно VBE
Чтобы узнать больше о макросах в целом, смотрите:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
а также
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
Чтобы узнать больше о макросах событий (код листа), см .:
http://www.mvps.org/dmcritchie/excel/event.htm
Макросы должны быть включены, чтобы это работало!
EDIT # 1:
Чтобы разрешить макросу размещать данные на защищенном листе:
- Снять защиту с листа
- Разблокировать определенные клетки, такие как C3
- Повторно защитить лист
Это позволит макросу (и пользователю) вводить данные на листе и при этом защищать формулы и т. Д.
EDIT # 2:
Чтобы избежать копирования в формате, используйте вместо этого:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim A As Range Set A = Range("A5:A10") If Intersect(Target, A) Is Nothing Then Exit Sub Cancel = True Application.EnableEvents = False Target.Copy Sheets("Sheet1").Range("C3").PasteSpecial Paste:=xlPasteValues Application.EnableEvents = True End Sub
Чтобы «запустить» подпрограмму после ошибки, поместите этот макрос в стандартный модуль и запустите его:
Sub qwerty() Application.EnableEvents = True End Sub