Очистить содержимое активной ячейки, если она содержит определенный текст - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь разработать инструмент, основанный на Excel, в котором я поставил ответ по умолчанию на мои вопросы как «ввод комментариев».Я хотел бы установить код, в котором, когда пользователь нажимает на ячейку ответа, текст «ввод комментариев» исчезает, и он становится пустой ячейкой.Однако, как только пользователь ввел свой ответ, ячейка не должна быть очищена - текст ответа должен остаться.

Я пробовал множество кодов VBA для этой проблемы.Хотя никто не выдает никакой ошибки, ни одна из них не работает.Ниже приведен пример кода, который я пробовал:

Sub Macro1()
Dim text as String
text = "Enter comments"
If ActiveCell = text then
ActiveCell.ClearContents 
End if
End sub

Ответы [ 3 ]

2 голосов
/ 07 июня 2019

Вставьте этот код в лист, а не в модуль:

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target = "Enter comments" Then Target.ClearContents

End Sub
1 голос
/ 07 июня 2019
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Set RngComments = Range("A1:B5")

If Not Intersect(Target, RngComments) Is Nothing Then
    If Target.Cells.Count = 1 Then
        If Target.Value = "Enter comments" Then
            Target.Value = ""
        End If
    End If
Else
    'this part refills all comment cells with "Enter comments" if found empty
    For Each cell In RngComments.Cells
        If cell.Value = "" Then cell.Value = "Enter comments"
    Next
End If

End Sub

Вы можете изменить RngComments на любой диапазон или объединение диапазонов.Цикл в части else заполняет пустые ячейки комментариев, но я не уверен, нужно ли вам это, и вы можете рассмотреть другое событие, чтобы сделать это, поскольку это может выполняться слишком часто.

0 голосов
/ 07 июня 2019

Вы можете использовать:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    'Limit the range where the code should triggered to avoid delays, check if only one cell affected to avoid errors and check cell value.
    If Not Intersect(Target, Range("A1:A10")) Is Nothing And Target.Value = "Enter comments" And Target.Count = 1 Then
        'Stop code to re run when cell clear to avoid delays
        Application.EnableEvents = False
            Target.Value = ""
        Application.EnableEvents = True
    End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...