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

このQ&Aに関連する最新のQ&A

A 回答 (4件)

ふたたび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
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/08/21 14:17

下記のURL



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

参考URL:http://dev.sfdata.ne.jp/VB/htdocs/msg09789.html
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/08/21 14:20

そのテキストボックスの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

この回答への補足

遅くなってごめんなさい!

↑すごいですね私もっと勉強しなきゃって気にさせられました。
↑早速使わせて頂きました。nakashiさんはどの位勉強してここまで
↑プログラム出来るようになったのですか?教えて下さい。(^O^)/

それと私の説明の仕方が悪かったみたいです。ゴメンナサイ!
TBLはメモ型で作っています。
文字を入力した際に半角のローマ字や全角のスペースを
禁止文字にしたいのですが、できれば禁止文字を増やしたり
減らしたり出来るようにしたいのです。
ぜひもう一度教えて下さい。お願いします。

補足日時:2001/08/17 21:05
    • good
    • 0

初めましてhirochan2001さん


ちょっと質問の意味が理解できませんが
テキストBOXに入力された文字すべてが対象になるなら

if txtbox名="a" Then
  MsgBox "禁止文字です"
End If

でいいと思いますが、テキストBOXに入力された文字のスペルの中で
禁止文字があったらエラーを出すという事であれば、InStrを使えばできます。
下記の様なプログラムを、テキストBOXのAfterUpdateか
コマンドボタンのClickイベントに入れてみてください。

If InStr(txtbox名, "a") <> 0 Then
  MsgBox "禁止文字です"
End If


動作確認はしてませんので、あしからず。
わからなかったら補足願います。

この回答への補足

遅くなってごめんなさい!
↑とてもわかり易い説明で助かりました。

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

補足日時:2001/08/17 20:56
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

  • H     

このQ&Aと関連する良く見られている質問

Q【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

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

Excel VBAの初心者です。
仕事で必要なため、教えていただけると助かります。


【やりたいこと】
Excel VBAで、入力が完了したExcelシートのA列(A1からA10)が、
半角のみであること、または全角が入力されていないこと、を
チェックしたいです。

半角以外の文字があった場合は、メッセージを表示します。
また、半角以外のセルがあった場合は、そのセルの色を水色にします。

入力チェックの方法は、ボタンにマクロを登録して、
そのボタンを押下することで行いま...続きを読む

Aベストアンサー

できてるじゃない・・・と思ったら、なるほどw

 誤) cellValue = Cells(1, i + 1)
 正) cellValue = Cells(i + 1, 1)

あとはわかってそーだけど、elseif Lenb/Len = 2 then 半角、else 混在。

QVBAでホームページからコピーしてエクセルに入力した文字をテキスト文字に変換するコマンドはありますか?

ホームページに書いてある文字をコピーしまして、エクセルにテキスト文字として貼り付けたいのですが、通常ですと、「コピー」「形式を選択して貼り付け」「テキスト」と非常に面倒です。「コピー」から「貼り付け」した時に、マクロで自動的にテキスト文字に変換出来る方法はありますでしょうか?
お手数をおかけします。
よろしくお願い致します。

Aベストアンサー

マクロではないのですが・・・

貼り付けたいセルをクリックして選択するのではなく、ダブルクリックして編集モードにすると、書式は無視されてテキストだけ貼り付けられますよ。

Q禁止文字チェック

現在VB6.0の勉強をしております。

すごく初歩的な質問だとは思いながらも、自分で調べられなかったので質問させてください。
テキストボックスに入力された文字列に許可文字以外が入力された場合にエラーとしたいのですが、方法が分かりません。
C言語の用に文字列を添え字指定でループ出来れば良いんですが、VBだと、どのように行うのでしょうか?

一応自分で調べ、似たような質問を見つけたんですが、私の場合は禁止文字が多すぎるので、それを一つずつチェックするのは無謀かなと思いまして・・・・。
http://oshiete1.goo.ne.jp/qa2174793.html

ちなみに許可文字は、半角カタカナと'0'~'9'と'A'~'Z'です。
それ以外の文字が含まれている場合はエラーにしたいです。

どうかよろしくお願いいたします。

Aベストアンサー

>「正規表現」の部分は「変数」という意味なんでしょうか?
変数名や関数名を漢字にしただけです。お好みで変えてもらって
結構です。
>のような感じでしょうか?
そうです。
>はやはり分けて記載すべきですか?
分けて記載すると正しく動作しません。禁止文字(検出パターン)は
同時に記述しなければなりません。
>「*」や「-」もパターン指定したい
「正規表現の構文」見ました?書いてあるんだけどね・・・
(1)[xyz] x 、 y 、 z のいずれかと一致する
(2)[^xyz] x 、 y 、 z のいずれとも一致しない
 今回はこのパターンで"\d"(数字)、"A-Z"(A~Z)、"。-゜"(半角カナ)
 という具合で、否定の^があるから、いずれにも該当しない文字を
 検索するという意味です。
(3)\(バックスラッシュ)は特殊文字をエスケープします。
 「*」と[ ] 内の「-」は特殊文字なので、エスケープが必要です。

と、ここまで書けば正解を書けますよね?
分けて記載するとオカシくなる原因も理解できましたか?
VB6なんだからデバッガでいろいろ試してみて、体で覚えるのが
一番です。

オマケ:"[^\dA-Z。-゜\*\-]"

>「正規表現」の部分は「変数」という意味なんでしょうか?
変数名や関数名を漢字にしただけです。お好みで変えてもらって
結構です。
>のような感じでしょうか?
そうです。
>はやはり分けて記載すべきですか?
分けて記載すると正しく動作しません。禁止文字(検出パターン)は
同時に記述しなければなりません。
>「*」や「-」もパターン指定したい
「正規表現の構文」見ました?書いてあるんだけどね・・・
(1)[xyz] x 、 y 、 z のいずれかと一致する
(2)[^xyz] x 、 y 、 z のいずれとも一致し...続きを読む

Qエクセル VBA 入力内容チェック

エクセルVBAの初心者(昨日から勉強)です。
以下のVBAを作りたいです。
C1からH12までの範囲に半角“-”が入力されています。
しかし、入力ミスで全角“-”が入力される場合が多発していますので、
C1からH12までの範囲内で、全角“-”が入力されたら、エラーを出すチェックツールを作りたいです。
何か知恵をお借りいただけますでしょうか?
宜しくお願いいたします。

Aベストアンサー

> 入力されるエクセルは別のところで作成されるので、変換できないです。

これは、もうすでに入力済みのエクセルをチェックするので入力前のシートに細工はできないという意味ですか?

ならば一番簡単なのは
Sub test01()
Range("C1:H12").Replace What:="-", Replacement:="-", LookAt:=xlPart
End Sub
という具合に置き換えてしまったらいかがでしょう?
別にマクロを使うまでもないですが。

QエクセルVBAについて質問です。VBAを初めて1カ月くらいなので、簡単

エクセルVBAについて質問です。VBAを初めて1カ月くらいなので、簡単な質問かもしれませんが、よろしくお願いします。

Cells(1, 1).Value = "'1/" + TextBox1.Value

上のコードの"'1/"の部分で質問なのですが、例えばTextBox1.Value=2の場合、セルA1には「1/2」と表示されます。そしてこの「1/2」を数式として扱おうとするとエラー(#VALUE!)になります。その原因はセルA1をクリックすると、メニューとシートの間にある「fx」の右側の部分に「'1/2」と表示されているからだと思うのですが…。
これを数式として扱う何か良い方法はありませんか?シートを扱って解決するのではなくVBAを扱って解決したいのですが…。

Aベストアンサー

こんばんは。

こういうことですか?

はずしてる予感がします。

Sub test()
  Cells(1, 1).Value = "'1/" + TextBox1.Value
  Cells(2, 1).Formula = "=" & StrConv(Cells(1, 1).Value, vbNarrow)
End Sub


人気Q&Aランキング

おすすめ情報