Как щелкнуть ячейку в A5: A10 на «Листе 2» и сделать так, чтобы значение ячейки, на которое щелкали, было введено в ячейку C3 на «Листе 1»

288
Lucas Bassoli

У меня есть рабочая тетрадь с двумя листами с надписью Sheet 1и Sheet 2.

У Sheet 2меня есть ассортимент A5:A10. Я хотел бы иметь возможность щелкнуть ячейку в этом диапазоне и ввести ее содержимое в ячейку Sheet 1.

Таким образом, диапазон A5:A10является

1001   1002   1003  1004  1005  1006 

Я хотел бы щелкнуть по ячейке A6 (in Sheet 2) и ввести значение A6 1002 Sheet 1 C3. Так что C3сейчас 1002.

До сих пор мне приходилось вводить значение Sheet 1вручную, но я хотел бы не только гиперссылку в документе, но и изменение значения C3.

0
Будет ли работать выпадающее меню, позволяющее выбрать эти значения? Это может быть самый простой способ сделать это cybernetic.nomad 5 лет назад 0
Можете ли вы согласиться на ** двойной щелчок ** ?? Gary's Student 5 лет назад 0
@ cybernetic.nomad Я использовал опцию проверки данных в раскрывающемся меню, но это так же своевременно, как ввод значения вручную в C3. Lucas Bassoli 5 лет назад 0
@ Gary'sStudent Да, двойной щелчок будет еще лучшим вариантом Lucas Bassoli 5 лет назад 0

1 ответ на вопрос

0
Gary's Student

Введите следующий макрос событий в область кода рабочей таблицы 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)

Поскольку это код рабочего листа, его очень легко установить и использовать автоматически:

  1. щелкните правой кнопкой мыши имя вкладки в нижней части окна Excel
  2. выберите View Code - откроется окно VBE
  3. вставьте материал и закройте окно VBE

Если у вас есть какие-либо проблемы, сначала попробуйте на пробную версию.

Если вы сохраните книгу, макрос будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить макрос:

  1. вызвать окна VBE, как указано выше
  2. очистить код
  3. закройте окно 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:

Чтобы разрешить макросу размещать данные на защищенном листе:

  1. Снять защиту с листа
  2. Разблокировать определенные клетки, такие как C3
  3. Повторно защитить лист

Это позволит макросу (и пользователю) вводить данные на листе и при этом защищать формулы и т. Д.

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 
Я включил макросы в Developer> Macro Security> Включить все макросы и доверительный доступ. И я вставил его в код просмотра листа 2 и переименовал другой лист в Sheet1. Однако, когда я дважды щелкаю ячейку в A5: A10, она просто выбирает ячейку и позволяет мне ее редактировать. Lucas Bassoli 5 лет назад 0
@LucasBassoli попробуйте сохранить книгу как **. Xlsm **; затем закройте рабочую книгу; затем снова откройте версию **. xlsm **. Gary's Student 5 лет назад 0
Отлично, это сработало! Однако важно, чтобы Sheet1 был защищен, потому что в нем много формул. На листе 1 единственная разблокированная ячейка - это C3 и все содержимое Sheet1 ссылается на C3 в своих формулах. Поэтому я попытался защитить Sheet1 и дважды щелкнуть A6 в Sheet2, но он больше не обновляет C3. Есть ли способ отредактировать код макроса, чтобы не оставлять лист 1 незащищенным? Lucas Bassoli 5 лет назад 0
@LucasBassoli Это важный вопрос. Смотрите мой ** РЕДАКТИРОВАТЬ # 1 ** Gary's Student 5 лет назад 0
Можно ли исправить форматирование в ячейке Sheet1 Cell C3 так, чтобы оно всегда было, например, Arial 24 жирным, тогда как в ячейке Sheet2 A6 Helvetica 12 Light? Потому что, когда я дважды щелкаю по A6, он вставляет не только значение A6 в C3, но и форматирование, которое соответствует A6 (шрифт, размер, жирный шрифт / свет, границы, заливка и цвет). Lucas Bassoli 5 лет назад 0
Иногда отладчик запускается, потому что C3 был случайно оставлен заблокированным, но как только отладчик перестает работать, функция двойного щелчка больше не работает. Какова процедура «перезапуска» кода, чтобы он снова активировался? Lucas Bassoli 5 лет назад 0
@LucasBassoli Смотрите мои ** РЕДАКТИРОВАТЬ # 2 **. Gary's Student 5 лет назад 0

Похожие вопросы