• ベストアンサー

AccessVBAで教えて下さい。

文字のチェックをしたいのですが、例えばtxtboxに「a」と入力したら msgboxで禁止文字です。ってエラーが出るようにするにはどうしたら いいのでしょうか?VBA初心者なのでやさしく教えて下さい。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nek
  • ベストアンサー率34% (46/135)
回答No.3

ふたたびnekです。 補足に回答いたします。 >文字を入力した際に半角のローマ字や全角のスペースを >禁止文字にしたいのですが、できれば禁止文字を増やしたり >減らしたり出来るようにしたいのです。 先ほど、回答したInStrを使用すればこれもできます。 先ほどとは、検索する方とされる方が逆になります。 下記のIf InStr("ABCDEFGHIJKLMNOPQRSTUVWXYZ", Mid(txtbox名, I, 1)) <> 0 Thenを見てください。 この文のダブルコーテーション内の文字があれば、メッセージボックスが表示されます。 言い換えれば、このダブルコーテーション内の文字を増やしたり減らしたりすれば hirochan2001さんの意図する事はできます。 尚、スペースは ' ←シングルコーテーションで囲んでくださいね。 ただし、この方法では半角全角の区別はできません。 半角全角はテキストボックスのプロパティ「IME入力モード」等で規制しましょう。 サンプルプログラム Dim I As Integer Dim MsgFlg As Boolean '禁止文字有無フラグ MsgFlg = True For I = 1 To Len(txtbox名)    If InStr("ABCDEFGHIJKLMNOPQRSTUVWXYZ", Mid(txtbox名, I, 1)) <> 0 Then      MsgFlg = False      Exit For    End If Next I If MsgFlg = False Then   MsgBox "禁止文字" End If

hirochan2001
質問者

お礼

遅くなりました。 何度もありがとうございました。 おかげさまで何とか出来ました。また何かわからない ことがありましたらお願いします。 では!

その他の回答 (3)

  • nakashi
  • ベストアンサー率51% (21/41)
回答No.4

下記のURL 「textボックスに全角のみ入力にする方法」 のスレッドが参考になりませんか?

参考URL:
http://dev.sfdata.ne.jp/VB/htdocs/msg09789.html
hirochan2001
質問者

お礼

遅くなりました。 おかげさまで出来ました。 また何かわからない時はお願いします。 では!

  • nakashi
  • ベストアンサー率51% (21/41)
回答No.2

そのテキストボックスのKeyPressイベントで 入力された文字のアスキーコードが取れますので そのコードで確認して下さい。 下記の例では AからFと0から9以外の文字が入力された時 音をだして入力をキャンセルするものです。 Private Sub txtMsgId_KeyPress(KeyAscii As Integer)  KeyAscii = ifHexChar(KeyAscii) End Sub Public Function ifHexChar(KeyAscii As Integer) As Integer  ifHexChar = KeyAscii  Select Case KeyAscii   Case 3, 22: Exit Function ' Ctrl C Ctrl V   Case Asc(vbCr), Asc(vbBack): Exit Function   Case Asc("a") To Asc("f"):    ifHexChar = KeyAscii - &H20: Exit Function   Case Asc("A") To Asc("F"): Exit Function   Case Asc("0") To Asc("9"): Exit Function   Case Else: ifHexChar = 0: Beep  End Select End Function

hirochan2001
質問者

補足

遅くなってごめんなさい! ↑すごいですね私もっと勉強しなきゃって気にさせられました。 ↑早速使わせて頂きました。nakashiさんはどの位勉強してここまで ↑プログラム出来るようになったのですか?教えて下さい。(^O^)/ それと私の説明の仕方が悪かったみたいです。ゴメンナサイ! TBLはメモ型で作っています。 文字を入力した際に半角のローマ字や全角のスペースを 禁止文字にしたいのですが、できれば禁止文字を増やしたり 減らしたり出来るようにしたいのです。 ぜひもう一度教えて下さい。お願いします。

  • nek
  • ベストアンサー率34% (46/135)
回答No.1

初めましてhirochan2001さん ちょっと質問の意味が理解できませんが テキストBOXに入力された文字すべてが対象になるなら if txtbox名="a" Then   MsgBox "禁止文字です" End If でいいと思いますが、テキストBOXに入力された文字のスペルの中で 禁止文字があったらエラーを出すという事であれば、InStrを使えばできます。 下記の様なプログラムを、テキストBOXのAfterUpdateか コマンドボタンのClickイベントに入れてみてください。 If InStr(txtbox名, "a") <> 0 Then   MsgBox "禁止文字です" End If 動作確認はしてませんので、あしからず。 わからなかったら補足願います。

hirochan2001
質問者

補足

遅くなってごめんなさい! ↑とてもわかり易い説明で助かりました。 私の説明の仕方が悪かったみたいです。 TBLはメモ型で作っています。 文字を入力した際に半角のローマ字や全角のスペースを 禁止文字にしたいのですが、できれば禁止文字を増やしたり 減らしたり出来るようにしたいのです。 もう一度教えて下さい。お願いします。

関連するQ&A

  • Excel VBA フォーム内のTXTBOX 値取得について

    お世話になります VBAフォーム内のTXTBOXの入力についてですが 「今まで」 TXTBOXに値入力ボタンクリック時に書き込み処理でしたが 「わからないこと」 次に開くとTXTBOXに(セル)に入力した値を取得しボタンクリックなしでリアルタイムに書き込みをしたいのですが、 イメージ的に、テキストボックスとセルのリンクみたいな感じが理想です、分かる方宜しくお願い申し上げます。 Excel 2003 XP Pro VBA 初心者以下

  • AccessVBAの参照不可

    Access2000、WindowsXPです。 作成したmdbを他のAccess2000、WindowsXP環境のPCでデータ入力をしてそれをVBAでファイル出力しようとするとエラーになり、調べてみると参照設定のところで参照不可にチェックが入っています。 そのチェックを外すと動作します。 データを入れる前のmdbには参照不可のチェックは入っていなかったので環境が変わってデータを入力した跡にチェックが入ったようです。 これはなぜおこるのでしょうか? また対策はありますか? 以上、よろしくお願いいたします。

  • 【Excel VBA】A列の全角・半角文字をチェック

    【Excel VBA】A列の全角・半角文字をチェック Excel VBAの初心者です。 仕事で必要なため、教えていただけると助かります。 【やりたいこと】 Excel VBAで、入力が完了したExcelシートのA列(A1からA10)が、 半角のみであること、または全角が入力されていないこと、を チェックしたいです。 半角以外の文字があった場合は、メッセージを表示します。 また、半角以外のセルがあった場合は、そのセルの色を水色にします。 入力チェックの方法は、ボタンにマクロを登録して、 そのボタンを押下することで行います。 以下に、僕が試したプログラムを記します。 アドバイスをいただけると幸いです。よろしくお願いします。 Sub 入力チェック() Dim cellValue As String Dim strANSI As String Dim i As Integer For i = 0 To 10 cellValue = Cells(1, i + 1) strANSI = StrConv(cellValue, vbFromUnicode) If Len(cellValue) = LenB(strANSI) Then MsgBox "セルは半角のみ" myColor = 8 Else MsgBox "セルの内容は全角のみ" End If MsgBox "セルの内容は全角と半角があり" Next i End Sub

  • AccessVBAでサポートお願いします。

    こんばんわ。AccessVBA初心者です。 下記のような処理を作りたいのですがわかりません・・。 もしお分かりになる方がいらっしゃいましたらサポートをお願い致します。 「テーブルA」「テーブルB」があり、それぞれのテーブルに連結した「フォームA」「フォームB」(両方とも帳票フォーム)があります。 テーブルには幾つかのフィールドがあり、その中にチェックボックスに連結したフィールドがあります。 まず、「フォームA」を開き、任意のレコードのチェックボックスにチェックを入れ(複数選択あり)、あるコマンドボタンをクリックするとチェックの入ったレコードのみを「テーブルA」から「テーブルB」へ移動させる処理を作成したいのですがどうもうまく作れません。 「テーブルB」へ移動後は「テーブルA」から該当のレコードが削除されている必要があります。 また、テーブルBには随時データが蓄積されていく必要があります。 どなたかお分かりになる方がいらっしゃいましたらご教授願います。 その際、VBAのソースを記述頂けますと助かります。 どうぞ宜しくお願い致します。

  • Access2010 VBAで文字を数える

    あるデータベースのフォーム内で、テキストボックス内に記載のある任意の文字列の数を数えて変数に格納したいと考えています。 そして、コマンドボタンを押したときに、メッセージボックスで「○件選択しています。」のように表示されるようにしたいと考えています。 色々と検索してみて以下のような記述をしたのですがうまく動いてくれませんでした。(「コンパイルエラー: SubまたはFunctionが定義されていません。」と表示されます。) Dim A As Integer A = Len([txtbox]) - Len(SUBSTITUTE([txtbox], ","))   MsgBox(A & "件の選択しています。") なお、テキストボックス、コマンドボタンは同一のフォーム内においてあります。 また、テキストボックス内で検索したい文字は半角カンマです。 詳しい方がおりましたら、どうぞご教示ください。

  • VBA UsedRangeで選択範囲を取得したい

    セルに aaa bbb ccc と入力し、vbaで Sub Macro() MsgBox ActiveSheet.UsedRange End Sub を実行すると、 型が一致しません。(Error 13) と言うエラーになります。 "$A$1:$D$3"と言うような値を取得したいのですが、どのようなVBAにすればいいのでしょうか? ご回答よろしくお願いします。

  • IF文の分岐が正しく動きません

    Access VBAについて教えてください。いまオプショングループの中にテキストボックスがあります。オプショングループをoption1、テキストボックスをtextbox1とします。テキストボックスは空の状態で、ロックをかけているので入力はできません。 実行ボタンを押したときに、テキストボックスの中が空ならMsgboxをだしなさいという文をかきました。 If txtbox1.value = "" Then msgbox "nothing" end if また .value=NULL とも書き換えて実行しましたが、なぜかmsgboxを表示せずにend ifにいってしまいます。何が原因と考えられるでしょうか?

  • アクセスできない保護レベルエラーが発生します

    VB or C#についてお教え下さい。環境はVS2010です。 フォーム(Form1)にテキストボックス(txtBOX)があります。 このFormのtxtBOXに対して文字列を入力するには、 this.txtBOX.text = "こんにちは"; または Me.txtBOX.text = "こんにちは"; というように、やるのは理解できます。 Classを追加して、このクラス(CLASS1)からForm1のテキストボックスに文字列を入力したいと思います。 そこで、 Form1 f1 = new Form1(); f1.txtBOX.text = "こんにちは"; とやりたかったのですが、そもそもインテリセンスが効きません。さらに、ビルドすると、 「Form1.txtBOXはアクセスできない保護レベルになっています。」と表示がされます・・・ いったい何が悪く、どこを直せば解決するのでしょうか?

  • msgboxの値をシリアル値で表示するには?

    お世話になります。 エクセル2010VBA初心者です。 以下の手順で msgboxの値をシリアル値で表示するには どうすればいいのでしょうか? Sub シリアル値で表示() a = InputBox("年を入力してください") b = InputBox("月を入力してください") c = InputBox("日を入力してください") d = a & "年" & b & "月" & c & "日" MsgBox d End Sub 宜しくおねがいいたします。

  • EXCELでの重複入力禁止を実現するVBAについて

    EXCELの重複入力禁止についての質問です。 重複入力禁止は、大きく分けて関数、入力規則を使っての設定と、VBAを使って設定の2つに分かれると思いますが(違っていたらすいません)今回、予め入力規則を設定しているセルに対し、重複入力の禁止を設定したいため、VBAで実現したいと考えています。 設定したいのは、A列、B列の2列を対象として、同じ内容の行がある場合はエラー表示させて、重複しているシートを赤く塗りつぶすような動作を考えています。例えば、A1とA2は一致するが、B1とB2が異なるといった一列だけの判断ではなく、A1、B1の内容とA2、B2に入力している内容が完全に一致した場合、エラー表示させて、A1、B1、A2、B2セルを赤く塗りつぶす動作になります。(2列1行という言い方が正確かどうかわかりませんが、上記のような内容を希望しています。) また、空白は対象外と考えます。 上記のようなVBAを作成したいのですが、当方まだまだVBAを勉強段階で自分でソースを作成することが難しいです。 ソースを教えて頂けないでしょうか? また、可能であれば、A、B、C3列を対象としたVBAについても教えていただけると非常に助かります。

専門家に質問してみよう