電子書籍の厳選無料作品が豊富!

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

A 回答 (3件)

数値型で表示だけでいいなら書式を「0000」と0を4つにする。


テキスト型でなら入力定義を「9999;0;0」とする。

この回答への補足

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

補足日時:2006/12/14 19:13
    • good
    • 0

すみません!



Public Function LenH(ByVal Text As String) As Integer
  LenH = LenB(StrConv(Text, vbFromUnicode))
End Function

SetR 関数で LenH 関数を利用していました。

この回答への補足

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

補足日時:2006/12/14 19:00
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/14 19:13

? 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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!