Очистка соседних клеток в Excel - PullRequest
0 голосов
/ 31 мая 2018

Не могли бы вы помочь мне добиться следующего:

У меня есть данные в диапазоне A9:G15, заданные в таблице, где A9:G9 содержит заголовки.

Я используюмакрос, который очищает некоторые соседние ячейки соседних столбцов в диапазоне B10:G15 один раз $A$10, очищается или изменяется.Однако макрос, кажется, очищает только соседние ячейки в диапазоне B10:G10, оставляя данные в диапазоне B11:B15 не очищенными.Это потому, что я не очищаю ячейки в A11:A15, так как не хочу, чтобы пользователи вводили данные в Range A11:A15.Вот макрос, который я использую:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

If Not Intersect(Target, Range("$A10:A15")) Is Nothing Then
    Target.Offset(0, 1).ClearContents
    Target.Offset(0, 2).ClearContents
    Target.Offset(0, 3).ClearContents
    Target.Offset(0, 4).ClearContents


ElseIf Not Intersect(Target, Range("B10:B15")) Is Nothing Then
    Target.Offset(0, 1).ClearContents
    Target.Offset(0, 2).ClearContents
    Target.Offset(0, 3).ClearContents

ElseIf Not Intersect(Target, Range("C10:C15")) Is Nothing Then
    Target.Offset(0, 1).ClearContents
    Target.Offset(0, 2).ClearContents

ElseIf Not Intersect(Target, Range("D10:D15")) Is Nothing Then
    Target.Offset(0, 1).ClearContents
 End If 
End Sub

Чтобы исправить это, я ввел эту формулу в ячейки A11:A15 IF($A$10="","", $A$10) и установил шрифтот A11:A15 до серого цвета и заливки до серого, чтобы пользователи не видели повторение в этих ячейках и знали, что им не следует вводить данные в эти ячейки.

Однако, похоже, что использованный выше макрос не распознает "" в A11:A15 (который возвращается по формуле) как акт очистки любой из ячеек в A11:A15.

Обратите внимание, что мне нужно применить макрос к любой новой строке, вставленной в таблицу позже.

Пожалуйста, сообщите мне, ребята.

Большое спасибо

1 Ответ

0 голосов
/ 31 мая 2018

"" не рассматривается как Ничего в Excel, я думаю, что это проблема.Не могли бы вы попытаться изменить условия IF в VBA соответственно?

РЕДАКТИРОВАТЬ:

Не могли бы вы попробовать изменить ниже часть

If Not Intersect(Target, Range("$A10:A15")) Is Nothing Then
    Target.Offset(0, 1).ClearContents
    Target.Offset(0, 2).ClearContents
    Target.Offset(0, 3).ClearContents
    Target.Offset(0, 4).ClearContents

на

If Range("$A10").Value = "" Then
    For i = 0 To 5
        For j = 1 To 5
            Target.Offset(i, j).ClearContents
        Next j
    Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...