2016-06-30 3 views
0

セルデータのバリデーションに問題があります。 私は、セルに2つのリストを追加して、ユーザーが一定の日付の範囲内で選択できるようにしようとしています。セルのバリデーションリストで転置すると辞書のキーが変換される

私は日付を保持する2つのほぼ同じ辞書を持っています。それらのキーは "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 

1ビット以外は正常に動作します。キーの文字列は文字列ではなく日付として扱われます。したがって、リスト内のフォーマットは変更され、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 
+0

こんにちは@ Nathan_Sav、私はあなたの解決策の両方を試して、彼らは動作しませんでした。私はそれが私の地域の環境と関係しなければならないと信じています。 [1]:http://i.stack.imgur.com/VDipI.jpg –

+0

即時ペインで試してみますか? dateerial(2016,12,1)2012年1月12日か12/1/2016かどうかを確認する方法もあります –

+0

?dateserial(2016,12,1) 2016-12-01 –

関連する問題