2016-06-06 2 views
0

я ищу для решения следующей задачи:Excel VBA - Проверка даты и конкретные строки входов

Мне нужно, чтобы добавить валидацию к определенному диапазону на листе Excel. Валидация должна допускать любые даты и простые строковые входы, такие как «done» или «tbc».

Я знаю, как добавить подтверждение для дат только через VBA, но я не могу найти способ использовать два типа проверки в одной ячейке.

Есть ли решение моей проблемы?

Большое спасибо заранее

+6

Помогите нам помочь вам ** опубликовать свой текущий код. ** –

+0

Если выбрать «Custom» в поле «Разрешить» флажок в Окно «Проверка данных», вы можете просто ввести формулу, которая должна быть «TRUE» для успешной проверки. Легко использовать 'AND' и' OR' для проверки диапазона дат и также разрешить определенный текст (например, «TBC»). Вы пробовали что-то вроде этого? – SiHa

+0

Вы хотите сделать это с помощью специальной формулы (VBA Macro), программно или со стандартными формулами. –

ответ

1

Проще всего я могу вещь, чтобы перейти к пользовательской проверки и использовать что-то вроде этой формулы:

=OR(ISDATE(RANGE),(LEN(RANGE)<5)) 

Вы можете отредактировать его и записать его с помощью макроса рекордер ... Или дайте код, как было предложено.

0

спасибо за ответы. Я бы предпочел решение VBA. Итак, я попытался реализовать предложения Vityata в VBA и придумал следующее. Тем не менее, я получаю ошибку времени выполнения 1004. Любая помощь?

Sub customValidation()

Dim rngCell As Range 


With Tabelle1 

    maxCell = .Cells(.Rows.Count, 1).End(xlUp).Row 

    For Each rngCell In .Range("L11:O" & maxCell) 

     With rngCell.Validation 

      .Delete 
      .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Formula1:="=OR(Isdate(rngCell),rngCell=""done"")" 
      .IgnoreBlank = True 
      .InCellDropdown = False 
      .InputMessage = "Enter date or ""done""" 
      .ErrorTitle = "" 
      .InputMessage = "Enter date or ""done""" 
      .ErrorMessage = "" 
      .ShowInput = True 
      .ShowError = True 
     End With 

    Next rngCell 
End With 

End Sub

0

Вот пример, который позволяет даты или 'TBC'. В этом случае, охватывающий диапазон столбцов (часть динамического решения)

Set rng = wksOpenReview.Range(wksOpenReview.Cells 
    (display_row, ro.lco_sd), wksOpenReview.Cells(lngLastRow, ro.lco_sd)) 
With rng.Validation 
    .Add xlValidateCustom, AlertStyle:=xlValidAlertStop, Formula1:="=OR(
    NOT(ISERROR(DATEVALUE(TEXT(" & rng.Cells(1, 1) 
    .Address(False, True, xlA1) & ",""dd/mmm/yyyy""))))," & 
    rng.Cells(1, 1).Address(False, True, xlA1) & "=""TBC"")" 
Смежные вопросы