Добавить адреса всех ячеек проверки данных в столбце в массив - PullRequest
0 голосов
/ 08 июня 2018

У меня есть макрокоманда изменения рабочего листа, так что всякий раз, когда значение ячейки проверки данных равно «» (удаление нажатия клавиши и т. Д.), Оно вставляется в строку «Нажмите, чтобы ввести значение».Приведенный ниже код работает нормально.

На другом листе мне нужна та же функциональность, но она применяется к нескольким ячейкам проверки данных, все в одном столбце, хотя и очень разбросаны.Итак, моя VBA нуждается в том, чтобы изменить макрос Change Event, чтобы теперь искать изменения только в этих ячейках проверки.

Первоначально предполагается поместить все адреса ячеек проверки данных в массив, чтобы макрос мог циклически проходить на каждомизменить, проверяя пустое значение.Это самый эффективный способ?Если это так, мне нужна помощь с синтаксисом.Скажем, все ячейки в столбце C ...

Вот макрос из одной ячейки с первого листа.Спасибо за ЛЮБОЕ руководство .:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Range("B2").Value = "" Then
     Range("B2").Value = "Click to Enter"
  End If
End Sub

1 Ответ

0 голосов
/ 08 июня 2018

Метод SpecialCells имеет xlCellTypeAllValidation.

Private Sub Worksheet_Change(ByVal Target As Range)
  on error goto safe_exit
  If not intersect(target, target.parent.Cells.specialcells(xlCellTypeAllValidation)) is nothing then
     application.enableevents = false
     dim t as range
     for each t in intersect(target, target.parent.Cells.specialcells(xlCellTypeAllValidation))
         if not cbool(len(t.value)) then _
             t.Value = "Click to Enter"
     next t
  End If
safe_exit:
    application.enableevents = true
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...