• 締切済み

Access_「1」と入力→「0001」に変換

Accessのフォーム上で4桁のコード扱うテキストボックスがあります。 このテキストボックスは必ず4桁で入力してもらいたいものです。 「1」と入力しEnterが押された時は「0001」となる様にしたいのですが どの様に設定すればよろしいでしょうか?

みんなの回答

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

数値型で表示だけでいいなら書式を「0000」と0を4つにする。 テキスト型でなら入力定義を「9999;0;0」とする。

picopico_7
質問者

補足

説明が不十分ですみません。 元テーブルのデータ型はテキスト型です。 入力定義とは、テキストボックスのプロパティの「定型入力」のことでしょうか? 定型入力へ「9999;0;0」を入力した結果、テキストボックスへ「1」と入力した時に「1000」と表示されEnterで次のテキストボックスへ移ると「1」と表示されてしまします。 やり方が違う様でしたらご指摘頂けると嬉しいです。

noname#22222
noname#22222
回答No.2

すみません! Public Function LenH(ByVal Text As String) As Integer   LenH = LenB(StrConv(Text, vbFromUnicode)) End Function SetR 関数で LenH 関数を利用していました。

picopico_7
質問者

お礼

すみません。補足の補足です。 このテキストボックスでは0~9までの数字しか扱いません。 元テーブルでのデータ型はテキスト型です。

picopico_7
質問者

補足

とてもいろいろ書いて頂いてこうゆう質問は大変恐縮なのですが このコードはどこに書いてあげれば良いのでしょうか? また設定の仕方など細かく教えていただけると助かります。 VBAはExcelで軽くやったことがあるんですがAccessと言うアプリケーションに関してはかなり初心者なものでして・・・。 どうぞよろしくお願いしますm(_ _)m

noname#22222
noname#22222
回答No.1

? 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

関連するQ&A