質問: セルテキストに特定の形式があるかどうかを確認します excelセルに入力されたテキストが次の形式に従っているかどうかを判断する方法を探しています: "0000/00/00"(0は任意の1桁の数字{0,1,2,3,4,5,6、 7,8,9})。セルのフォーマットが「0000/00/00」であるかどうかを確認する方法はありますか?私がすでに知っていること: セルのデータ検証ルールでdatevalue()関数を使用して確認できるので、このメソッドの問題は、有効な日付として1001/04/07を受け入れないことです。 テキストに2つの「/」文字が含まれていて、その長さが10文字に等しいかどうかを確認しようとしています。次のようなデータ検証式: "= or(and(len(a16)= 10、(len(a16)-len(substitute(a16、"/"、" "))= 2)、not(false)))" 、この検証ルールの問題は、「0550 // 0014」のようなエントリを有効として受け入れることです。 追伸:マクロや拡張機能の使用が許可されていない環境で作業しています!
回答: 次のユーザー定義関数は、引数の形式が適切な場合は[〜#〜] true [〜#〜]を返し、そうでない場合はfalseを返します。 )::option explicit public function formatcheck(r as range) as boolean dim s as string, s2 as string, arr, i as long formatcheck = false s = r(1).text s2 = replace(s, "/", "") if len(s2) <> 8 then exit function arr = split(s, "/") if ubound(arr) <> 2 then exit function if len(arr(0)) <> 4 then exit function if len(arr(1)) <> 2 then exit function if len(arr(2)) <> 2 then exit function for i = 1 to 8 if not mid(s2, i, 1) like "[0-9]" then exit function next i formatcheck = true end function