Автоматически заполнять и выполнять формулу в ячейке C2 и т. д., когда я ввожу данные в ячейку A2 и т. д.

Хотел бы автоматически заполнить ячейку (C: C) за вычетом заголовка, поскольку я ввожу данные в ячейку (A: A) за вычетом заголовка, используя VBA. Для формулы, которую я хочу автоматически заполнить в ячейке C: C, есть логика true/false, но вместо этого я заменил ее сканером 1 и 2.

=IF(ISNUMBER(SEARCH("$",$A2)),"Scanner 2",IF(ISNUMBER(SEARCH("#",$A2)),"Scanner 1","Error"))

Ниже приведен код VBA, который я пытался использовать, может ли он быть неправильным, поскольку я новичок в VBA: (может быть, использовать функцию вместо частной подпрограммы?)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rINT As Range
Dim rCell As Range
Dim tCell As Range

Set rINT = Intersect(Target, Range("A:A"))
If Not rINT Is Nothing Then
    For Each rCell In rINT
        Set tCell = rCell.Offset(0, 2)
        If IsEmpty(tCell) Then
            With ThisWorkbook.Sheets("BOD_Barcode")
            tCell = tCell.Formula = "=IF(ISNUMBER(SEARCH(""$"",$A2)),""Scanner 2"",IF(ISNUMBER(SEARCH(""#"",$A2)),""Scanner 1"",""Error""))"
            End With
        End If
    Next
End If
End Sub 

person Arianne_2130p    schedule 10.07.2019    source источник
comment
Это выглядит подозрительно: tCell = tCell.Formula = ..., но в остальном неясно, что вы имеете в виду, говоря, что это не работает. Можете ли вы уточнить? Пожалуйста, измените вопрос более подробно.   -  person David Zemens    schedule 10.07.2019
comment
Также, если вы хотите использовать Worksheet_Change, не переименовывайте его в Autofill_scan_name.   -  person BigBen    schedule 10.07.2019
comment
Привет, да, я пытался сделать worksheet_change , я пересмотрю и уточню вопрос.   -  person Arianne_2130p    schedule 10.07.2019
comment
Вы уверены, что хотите использовать эту формулу в каждой ячейке столбца? Кроме того, я не верю, что вы можете сделать tCell = tCell.Formula = ... Это было бы просто tCell.Formula = ... Кроме того, является ли ThisWorkbook.Sheets("BOD_Barcode") листом, на котором находится это Worksheet_Change() событие? Если нет, вам нужно уточнить, потому что tCell будет любым активным листом...   -  person BruceWayne    schedule 10.07.2019
comment
@BruceWayne да, я хотел бы поместить эту формулу в каждую ячейку в столбце C (минус заголовок), да, я считаю, что это лист, связанный с рабочим листом _change(), но на всякий случай, как мне узнать? Новое в VBA   -  person Arianne_2130p    schedule 10.07.2019
comment
Использование таблицы, отформатированной с помощью Ctrl+T, не вариант? Это воспроизведет формулу вниз, если я понимаю ваши требования.   -  person BigBen    schedule 10.07.2019
comment
@BigBen Я не думаю, что CTRL - T будет работать .... по сути, я ищу, я хочу, чтобы это было точно так же, как мой код отметки времени, когда я ввожу данные, он добавляет отметку времени, но теперь я также хочу, чтобы отметка времени выполнить формулу   -  person Arianne_2130p    schedule 10.07.2019
comment
Разобрался вместо использования VBA, вместо этого добавил формулу прямо в ячейку и включил итерацию из настройки параметров, использовал: = ЕСЛИ ($ A2‹›, ЕСЛИ ($ C2 =, ЕСЛИ (ЧИСЛО (ПОИСК ($, $ A2))). ,Сканер 2, ЕСЛИ(ISNUMBER(ПОИСК(#,$A2)),Сканер 1,Ошибка)),$C2),)   -  person Arianne_2130p    schedule 11.07.2019


Ответы (1)


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

=IF($A2<>"",IF($C2="",IF(ISNUMBER(SEARCH("$",$A2)),"Scanner 2", IF(ISNUMBER(SEARCH("#",$A2)),"Scanner 1","Error")),$C2),"")
person Arianne_2130p    schedule 11.07.2019