Excel - изменение значения ячейки из другой ячейки, но измененная ячейка сохраняет значение после очистки входной ячейки

git blame filename

- лучшая команда, чтобы показать вам эту информацию

0
задан thebrycecarter 18 March 2019 в 15:30
поделиться

2 ответа

Вы можете сделать это в случае события 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 или какой-либо вариант не сработает, поскольку не может запомнить значение, которое с тех пор было удалено. [ 117]


Полагаю, вы могли бы подделать формулу , как показано ниже, но я определенно не рекомендую ее, особенно в сочетании с кодом. Я просто публикую это из интереса.

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(""""),"""","""")&C2"
            old = Target.Value
        Else
            Range("C1").Formula = "=IF(N(""" & old & """),"""","""")& """ & old & """"
        End If

    End If
End Sub

Это бессмысленно, потому что вам все равно нужен код.


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

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Value <> "" Then
        ActiveWorkbook.Names.Add Name:="stored", RefersToR1C1:="=""" & Target.Value & """"
    End If
End Sub
0
ответ дан Andy G 18 March 2019 в 15:30
поделиться

Мы можем сделать это с помощью Event Macro . Поместите следующий код в область кода рабочего листа:

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

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

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

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

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

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

    1. откройте окна VBE, как указано выше
    2. , очистите код
    3. закройте окно VBE

    Чтобы узнать больше о макросах в целом, см .:

    [ 1118] 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

    Для работы этого макроса необходимо включить макросы!

0
ответ дан Gary's Student 18 March 2019 в 15:30
поделиться
Другие вопросы по тегам:

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