У меня есть отчет, который я загружаю. Он имеет различную длину столбца А. Я хочу создать VBA/Macro, который поместит определенный текст в M2, если в соответствующей ячейке A есть какие-либо данные. Я не хочу, чтобы он помещал данные в каждую ячейку столбца M на неопределенный срок, и хочу, чтобы он помещал текст только в том случае, если в соответствующей ячейке A есть что-то.

Я попробовал это, но это не работает:

Private Sub Worksheet_Change()
If Worksheets("Sheet1").Range("A2").Value <> "" Then
Worksheets("Sheet1").Range("M2").Value = "Testing"
End If
End Sub

Кто-нибудь может помочь?

2 ответа2

0

Первый код, который вы попробовали, проверяет одну ячейку (A2) и заполняет одну ячейку (M2). Если вы хотите проверить больше ячеек, поместите в макрос цикл "Для каждого". Например, смотрите Как повторять задачи с вашим кодом VBA с помощью цикла

Если вы не хотите использовать макрос, вы можете использовать фильтр для отображения только строк со значениями в столбце А.

0

Если вы под "соответствующей ячейкой А" действительно подразумеваете А2, и ваш код верен, но выдает ошибки при попытке его запустить, попробуйте следующее:

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A2").Value <> "" Then
    Range("M2").Value = "Testing"
End If
End Sub

Я предполагаю, что вы поместили этот код в тот рабочий лист, где вы хотите его запустить.

Это будет печатать "Тестирование" в "M2" каждый раз, когда лист меняется, когда есть что-то в "A2".

Если вы хотите, чтобы эта часть также автоматически удалялась, вы можете добавить

Else
Range("M2").Value = ""

в случае если

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .