アプリ版:「スタンプのみでお礼する」機能のリリースについて

アクセスのほぼ初心者です。(若干のクエリ作成と、VBAの簡単なメンテナンスなら直すことが出来る程度です。)

アクセスのフォーム画面から、文字を入力する際に次の条件を満たして制限をかけたいのですが、どのような方法がありますでしょうか。

フォームのデザインから、〔プロパティ〕で文字数制限がかけられるようですし、記号の一律入力不可にする方法(IMEをオフにする?)があるようなのですが、一部の記号は入力可能としたいので、良い方法がわかりません。

文字数:半角140字以内
入力可能な文字:半角英数字、一部の記号(ただし、&、”、# は入力不可としたいです)

初心者には難しいかもしれないのですが、できれば入力している際に、文字数オーバーや使用出来ない文字を入力している際に〔警告〕が出せればと思っています。

今のところ、良い方法が分からず、一度エクセルにエクスポートしてからチェックしているのでとても時間がかかっているので、良い方法があれば教えて下さい。

A 回答 (1件)

文字数の制限はテーブルをデザインビューで開いて


各フィールドのフィールドサイズで指定するのが(140)
確実かつ簡単です。指定数より多く入力しようとしても無視されます。

あとはフォームでの設定になります。
半角/全角はコントロールのプロパティで、IME入力モードを使用不可にします。
入力チェックは
コントロール(仮に名前をモジモジににます)の更新前処理に

Private Sub モジモジ_BeforeUpdate(Cancel As Integer)
  Dim i As Integer
  Dim chkMsg(2) As String

  If Len(Me!モジモジ) > 140 Then chkMsg(0) = "文字数140以内"
  If Len(Me!モジモジ) <> LenB(StrConv(Me!モジモジ, vbFromUnicode)) Then chkMsg(1) = "半角だけ"
  For i = 1 To Nz(Len(Me!モジモジ), 0)
    If Mid(Me!モジモジ, i, 1) Like "[&""#]" Then
      chkMsg(2) = "&""#は不可"
      Exit For
    End If
  Next

  If Len(Join(chkMsg, vbCrLf)) > 6 Then 'vbcrlf以外にも文字が含まれている
    MsgBox Join(chkMsg, vbCrLf)
    Cancel = True
  End If
End Sub

入力中のチェックは面倒くさいのでほんのさわりだけですが
キークリック時イベントで
Private Sub モジモジ_KeyDown(KeyCode As Integer, Shift As Integer)
  If Shift = acShiftMask Then 'Shiftキーが押されていたら
    Select Case KeyCode
      Case vbKey2
        MsgBox """ は不可"
        KeyCode = 0 '入力は無かったことにする
      Case vbKey3
        MsgBox "# は不可"
        KeyCode = 0
      Case vbKey6
        MsgBox "& は不可"
        KeyCode = 0
    End Select
  End If
End Sub
    • good
    • 1
この回答へのお礼

ご回答いただき、有難うございます。早速、明日試してみます!

お礼日時:2015/06/28 20:33

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A