#excel #input #cell
#excel #ввод #ячейка
Вопрос:
Я в основном пытаюсь создать входную ячейку. Чего я хочу, так это того, что когда я изменяю значение C2, оно изменяет значение C1. Но когда я стираю C2, я хочу, чтобы C1 сохранил значение.
Итак, если я сделаю C2 = «Adam», C1 = «Adam», но затем я изменю C2 = «» и C1 по-прежнему будет «Adam».
Кто-нибудь может мне помочь с этим? Я целую вечность искал в Интернете и не могу найти ничего, что помогло бы мне найти решение.
Комментарии:
1. Что вы уже пробовали?
Ответ №1:
Вы можете сделать это на Worksheet_Change
событии,
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 2 And Target.Column = 3 Then 'C2
If Target.Value <> "" Then
Range("C1").Value = Target.Value
End If
End If
End Sub
Формула =C2
или какой-либо вариант не будут работать, потому что они не могут запомнить значение, которое с тех пор было удалено.
Я полагаю, вы могли бы подделать формулу, подобную следующей, но я определенно не рекомендую это, особенно в сочетании с кодом. Я просто публикую это из интереса.
Private Sub Worksheet_Change(ByVal Target As Range)
Static old As String
If Target.Row = 2 And Target.Column = 3 Then 'C2
If Target.Value <> "" Then
Range("C1").Formula = "=IF(N(""""),"""","""")amp;C2"
old = Target.Value
Else
Range("C1").Formula = "=IF(N(""" amp; old amp; """),"""","""")amp; """ amp; old amp; """"
End If
End If
End Sub
Это бессмысленно, потому что вам все равно нужен код.
Я полагаю, что даже возможно, чтобы код просто записывал в именованный диапазон / значение, на которое затем ссылается формула:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value <> "" Then
ActiveWorkbook.Names.Add Name:="stored", RefersToR1C1:="=""" amp; Target.Value amp; """"
End If
End Sub
Ответ №2:
Мы можем сделать это с помощью макроса события. Поместите следующий код в область кода рабочего листа:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C1 As Range, C2 As Range
Set C1 = Range("C1")
Set C2 = Range("C2")
If Intersect(Target, C2) Is Nothing Then Exit Sub
If C2.Value = "" Then Exit Sub
Application.EnableEvents = False
C2.Copy C1
Application.EnableEvents = True
End Sub
Поскольку это код рабочего листа, его очень легко установить и использовать автоматически:
- щелкните правой кнопкой мыши название вкладки в нижней части окна Excel
- выберите Просмотр кода — откроется окно 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
Для этого должны быть включены макросы!