VBA数据验证首选

时间:2015-12-01 13:05:07

标签: excel vba list validation excel-vba

我有一个从A2到A200的日期列表

我在Cell B1验证列表中引用A2:A200并且它工作正常。

但是当我想从列表中选择一个日期时,它总是首先从A2给出值...

VBA中有没有办法将A100的值分配给它?

1 个答案:

答案 0 :(得分:2)

没有VBA:

C2 中输入:

=OFFSET($A$2,199-ROWS($1:1),0)

并复制下来。然后使用 C2:C200 作为验证列表。

使用VBA

试试这个宏:

Sub InternalString()
    Dim s As String

    s = Range("A200").Value
    For i = 199 To 2 Step -1
      s = s & "," & Cells(i, "A").Value
    Next i

    Range("B1").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=s
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub