我遇到了细胞数据验证中的格式化问题。 我正在尝试在单元格中添加两个列表,供用户在日期范围内进行选择。
我有两个几乎相同的字典,它们保存日期,它们的键是“yyyy-mm-dd”格式但是字符串。我操纵字典以删除不必要的日期并仅保留所需的日期。
我正在使用以下代码来验证验证中的密钥。
With .Range("DATE")
.Validation.Delete
.Cells(1, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:=Join(dict_MIN.Keys, ",")
.Cells(1, 2).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:=Join(dict_MAX.Keys, ",")
End With
除了一位之外它正常工作。然后,键中的字符串不被视为字符串而是日期。因此,列表中的格式会发生变化,并显示为yy / mm / dd,这对用户来说非常困惑。
有没有办法将这些键作为字符串连接起来,所以它们的值按原样传递?
由于
答案 0 :(得分:0)
以下对我来说没问题
Dim s As String
Dim d As New Scripting.Dictionary
d.Add "2016-12-02", ""
d.Add "2016-12-08", ""
d.Add "2016-12-09", ""
s = Join(d.Keys(), ",")
ActiveCell.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=s
这里也是自定义连接尝试
Public Function CustomJoin(arr As Variant, strDelim As String) As String
Dim intCounter As Integer
For intCounter = LBound(arr) To UBound(arr)
CustomJoin = CustomJoin & format(arr(intCounter),"dd/mm/yyyy") & IIf(intCounter < UBound(arr), strDelim, vbNullString)
Next intCounter
End Function