Код VBA для проверки столбца имеет только формулы - PullRequest
0 голосов
/ 28 января 2019

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

Я нашел эту статью, которая весьма полезна: https://docs.microsoft.com/en-us/office/vba/api/excel.range.hasformula, и это сработало до некоторой степени - я не хочу подсказку для выбора диапазона, поэтому я попытался с 1 ячейкой или с заданным диапазоном, EG, L12: L3000 (пользователи могут отправлять входные данные различного количества строк, но 3000 может охватить все потенциально. Если бы я мог включить в него синтаксис конца (xldown), хотя это было бы более идеальным!)

Я могу заставить его выбросить окно сообщения, если я выберу одну ячейку в качестве диапазона, и это значение, но не для нескольких ячеек одновременно, даже если у них есть значение среди них.Я слишком новичок, чтобы понять Looping, несмотря на попытки некоторое время!

Любая помощь будет принята с благодарностью!

Использование одной ячейки в качестве диапазона, использование нескольких ячеек в Col Lкак диапазон.код, который у меня есть, работает для одной ячейки, но не для нескольких ...

If DataInput.[L12].HasFormula = False Then
a = MsgBox("CAUTION: Formula in Column L appears to have been written over. Do you want to Save anyway?", vbYesNo)
If a = vbYes Then Cancel = False
End If

Ожидается: если где-нибудь в столбце L есть значение, оно будет циклически выполнено и найдет его.Затем появится всплывающее окно с запросом подтверждения, которое они хотят сохранить, или просто будут вставлены всплывающие предупреждающие формулы и отменено сохранение.

1 Ответ

0 голосов
/ 28 января 2019

Это помогает?Вы можете использовать SpecialCells как ярлык для поиска различных типов ввода в ячейку (включая формулы).

Sub x()

Dim r As Range

On Error Resume Next
Set r = Range("L1:L10").SpecialCells(xlCellTypeConstants)
On Error GoTo 0

If Not r Is Nothing Then
    MsgBox "a formula has been overwritten" & vbCr & r.Address
End If

End Sub

enter image description here

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