- 締切済み
Access_「1」と入力→「0001」に変換
Accessのフォーム上で4桁のコード扱うテキストボックスがあります。 このテキストボックスは必ず4桁で入力してもらいたいものです。 「1」と入力しEnterが押された時は「0001」となる様にしたいのですが どの様に設定すればよろしいでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- mshr1962
- ベストアンサー率39% (7417/18945)
数値型で表示だけでいいなら書式を「0000」と0を4つにする。 テキスト型でなら入力定義を「9999;0;0」とする。
すみません! Public Function LenH(ByVal Text As String) As Integer LenH = LenB(StrConv(Text, vbFromUnicode)) End Function SetR 関数で LenH 関数を利用していました。
お礼
すみません。補足の補足です。 このテキストボックスでは0~9までの数字しか扱いません。 元テーブルでのデータ型はテキスト型です。
補足
とてもいろいろ書いて頂いてこうゆう質問は大変恐縮なのですが このコードはどこに書いてあげれば良いのでしょうか? また設定の仕方など細かく教えていただけると助かります。 VBAはExcelで軽くやったことがあるんですがAccessと言うアプリケーションに関してはかなり初心者なものでして・・・。 どうぞよろしくお願いしますm(_ _)m
? SetR("1", "0000") 0001 Private Sub テキスト57_AfterUpdate() Me.テキスト57 = SetR(Me.テキスト57, "0000") End Sub と、SetR 関数を利用すると目的を達成できます。 ? Format(1, "0000") 0001 または、 書式="0000" でもOKなので、SetR 関数はお呼びでないかも?? でも、数値でないコードも予定されていれば役に立つかも・・・。 適宜3つからチョイスして下さい。 Public Function SetR(ByVal Text1 As String, ByVal Text2 As String) As String Dim I As Integer Dim J As Integer Dim L As Integer Dim M As Integer Dim N As Integer J = Len(Text1) L = LenH(Text2) For I = 1 To J M = LenH(Mid$(Text1, 1, I)) If M > L Then SetR = Left$(Text2, L - N) & Left$(Text1, I - 1) Exit Function Else N = M End If Next I SetR = Left$(Text2, L - N) & Text1 End Function
補足
説明が不十分ですみません。 元テーブルのデータ型はテキスト型です。 入力定義とは、テキストボックスのプロパティの「定型入力」のことでしょうか? 定型入力へ「9999;0;0」を入力した結果、テキストボックスへ「1」と入力した時に「1000」と表示されEnterで次のテキストボックスへ移ると「1」と表示されてしまします。 やり方が違う様でしたらご指摘頂けると嬉しいです。