Очистить содержимое оставить формулу при изменении ячейки - PullRequest
0 голосов
/ 20 апреля 2020

При изменении значения (раскрывающегося списка) ячейки B12 в ячейке B13 должно быть указано «Please Select ...», и все ячейки в диапазоне A16: N20 должны быть очищены, но не формулы (каждая ячейка в диапазон содержит формулы индекса / соответствия, связанные с ячейками B12, B13 и другими ...). Это текущий код, который не работает ...

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$B$12" Then

        With Application
            .DisplayStatusBar = False
            .ScreenUpdating = False
            .EnableEvents = False
            .Calculation = xlCalculationManual
        End With

    Range("B13").Value = "Please Select..."
    Range("A16:N20").SpecialCells(xlCellTypeConstants, 23).ClearContents

        With Application
            .Calculation = xlCalculationAutomatic
            .EnableEvents = True
            .ScreenUpdating = True
            .DisplayStatusBar = True
        End With
    End If
End Sub

Также Excel очень медленно обновляет все эти формулы индекса / соответствия - есть ли способ в vba сделать его быстрее?

1 Ответ

0 голосов
/ 20 апреля 2020
Dim r as Range

for each r in Range("A16:N20").Cells
  if WorksheetFunction.isFormula(r) = "" then
    r.clearcontents
  end if
next r

Как видите, вы можете использовать функцию листа IsFormula(), чтобы решить эту проблему.

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