Введите следующий макрос событий в области кода рабочей таблицы:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A2 As Range
Set A2 = Range("A2")
If Intersect(A2, Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
[A4] = [A2] + [A3]
Application.EnableEvents = True
End Sub
Поскольку это код рабочего листа, его очень легко установить и использовать автоматически:
- щелкните правой кнопкой мыши имя вкладки в нижней части окна 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:
Сначала откажитесь от предыдущего макроса и замените его следующим:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim A2 As Range
Set A2 = Range("A2")
If Intersect(Target, A2) Is Nothing Then Exit Sub
Cancel = True
[A4] = [A2] + [A3]
A2.Font.Bold = True
End Sub
Это влияет только на поведение двойного щелчка в A2. Код можно легко расширить, чтобы охватить другие ячейки или диапазоны.
EDIT # 2:
В этой версии двойной щелчок A2 подтверждает A2. Двойной щелчок A3 не подтверждает A2:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim A2 As Range, boo As Boolean, A3 As Range
Set A2 = Range("A2")
Set A3 = Range("A3")
If Not Intersect(Target, A2) Is Nothing Then
[A4] = [A2] + [A3]
A2.Font.Bold = True
Cancel = True
End If
If Not Intersect(Target, A3) Is Nothing Then
A2.Font.Bold = False
[A4] = [A3]
Cancel = True
End If
End Sub
EDIT # 3:
Использование этого макроса расширяет функциональность до столбцов за столбцом A:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rw2 As Range, rw3 As Range, kolumn As Long
Set rw2 = Range("2:2")
Set rw3 = Range("3:3")
kolumn = Target.Column
If Not Intersect(Target, rw2) Is Nothing Then
Cells(4, kolumn) = Cells(2, kolumn) + Cells(3, kolumn)
Cells(2, kolumn).Font.Bold = True
Cancel = True
End If
If Not Intersect(Target, rw3) Is Nothing Then
Cells(2, kolumn).Font.Bold = False
Cells(4, kolumn) = Cells(3, kolumn)
Cancel = True
End If
End Sub