Excel 2003: двойной щелчок по ячейке для изменения содержимого другой ячейки в другой рабочей таблице - PullRequest
0 голосов
/ 08 июля 2010

Все, что я пытаюсь сделать, - это выяснить, как изменить ячейку на одном рабочем листе на ячейку другого, если дважды щелкнуть мышью в другой

На моем втором рабочем листе настроен следующий код:

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



End Sub

Мой вопрос: какой код для изменения ячейки?

Я думаю, это будет выглядеть примерно так:

Sheet1!CellA1!Value = Target.Value

Но ясно, что это не так. Так что же правильно?

Ответы [ 2 ]

2 голосов
/ 08 июля 2010

Если вы посмотрите в Project Explorer в редакторе VBA, на самом деле есть два имени листа. Имя слева - это то, как лист просматривается в VBA, имя справа - это имя, указанное на вкладке внизу, когда пользователь использует Excel. (По умолчанию они оба "Sheet1", это может сбивать с толку.)

Мне проще всего использовать имя; это устраняет необходимость произносить «Рабочий лист» («Что угодно»). Если имя не было изменено, просто используйте его.

Sheet1.Range("A1").Value = Target.Value

edit: Как примечание, единственный способ изменить имя слева - убедиться, что окно «Свойства» видно, нажмите на лист и затем переименуйте. Я считаю, что лучше всего переименовывать все мои листы сразу, чтобы избежать Sheet1, Sheet2, Sheet3. wsTotals, wsCoverForm и wsConfigForm могут сделать код намного более читабельным.

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

ActiveWorkbook.Worksheets("Sheet1").Range("A1").Value = Target.Value

Это единственный способ заставить его работать, у меня были обе работы для меня, проверяя это только сейчас. Использовать первый способ немного сложнее.

1 голос
/ 08 июля 2010

Попробуйте

Worksheet("Sheet1").Range("A1").Value = Target.Value

Или создайте ячейку, в которой вы хотите изменить именованный диапазон, и просто используйте

Range("MyName").Value = Target.Value
...