• ベストアンサー

大小・全半角の禁止文字?

Access97を使用しております。 現在↓のような形で禁止文字を設定しておりますが、大英字全角のAでも 小英字半角のaでも全て禁止文字として認識されてしまいます。 >>たぶんUnicodeのせいだと・・・(泣) これを例えば小半角英字の「a」のみを禁止文字として認識させるにはどの ような方法があるのでしょうか?ご教授お願い致します。   Dim R As Integer Dim strChk As String Dim strMoji As String '禁止文字チェック strMoji = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz "   Me.txtMsg = "" For R = 1 To Len(Me.内容) strChk = Mid$(Me.内容, R, 1) If InStr(strMoji, strChk) <> 0 Then Me.txtMsg = "入力禁止文字「 " & strChk & " 」が使用されています。" Exit Sub Exit For End If Next R

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

  • ベストアンサー
  • paz777
  • ベストアンサー率47% (77/163)
回答No.3

まだ解決していないようなので回答します。 InStr関数で色々と試してみたのですが、思った結果が得られないので StrComp関数にしてみました。 以下は、こちらでテストしたモジュールです。 ---------------------------------------------------------------------- Public Function MOJI_TEST(H_txt As String) Dim R As Integer Dim R1 As Integer Dim strChk As String Dim strMoji As String Dim txtMsg As String ' 禁止文字チェック strMoji = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz " txtMsg = "" For R = 1 To Len(H_txt) strChk = Mid$(H_txt, R, 1) ' For R1 = 1 To Len(strMoji) If StrComp(StrConv(Mid$(strMoji, R1, 1), vbFromUnicode), _ StrConv(strChk, vbFromUnicode), vbBinaryCompare) = 0 Then txtMsg = "入力禁止文字「 " & strChk & " 」が使用されています。" MsgBox txtMsg Exit Function End If Next R1 ' Next R ' End Function ---------------------------------------------------------------------- 後は適当に直して下さい。 ではでは・・・

pooh_200x
質問者

お礼

返答が遅れすみません! 実は事故って入院してました。(泣) まだ確認は出来てないのですが、一旦ポイントだけ入れさせて頂きます。 申し訳ありませんでした。

その他の回答 (2)

  • SpeedKing
  • ベストアンサー率50% (6/12)
回答No.2

Unicodeで比較するっていうのは如何でしょうか。 strChk = Mid$(Me.内容, R, 1) strMoji2 = Mid$(strMoji、InStr(strMoji, strChk),1) If AscW(strMoji2) = AscW(strChk) Then StrConvでANSIに変換して比較することもできると思いますが、Unicodeでも比較できるのではと思いました。 でも試していないので自信があるわけではありません。ゴメンナサイ。

pooh_200x
質問者

お礼

返答が遅れすみません! 実は事故って入院してました。(泣) まだ確認は出来てないのですが、一旦ポイントだけ入れさせて頂きます。 申し訳ありませんでした。

  • baha
  • ベストアンサー率38% (16/42)
回答No.1

こんにちは。 StrConv関数を使用して、UNICODEからANSI形式に変換してから チェックすればどうですか? 詳しくはAccessのHelp参照ください。

pooh_200x
質問者

お礼

返答が遅れすみません! 実は事故って入院してました。(泣) まだ確認は出来てないのですが、一旦ポイントだけ入れさせて頂きます。 申し訳ありませんでした。

関連するQ&A

  • JIS codeでの文字数・桁数制限

    Access97を使用しております。 VBのカテゴリに近いと思い質問させて下さい。 >JIS codeでの文字数・桁数制限を行いたいのですが、 条件がきつく困ってます。 条件.(JIS)20文字で改行 MAXが25桁まで入力可能 >>一応行数は改行数を数えることで、取得できてます。 Dim i As Integer Dim strChk As String Dim intCnt As Integer '2桁取得し改行を認識させる。 For i = 1 To Len(Me.内容) - 1 strChk = Mid$(Me.内容, i, 2) If strChk = Chr(13) & Chr(10) Then intCnt = intCnt + 1 End If Next i Me.txtGyo = intCnt + 1 Exit Sub 文字数は通常1行であれば↓のようなコードですみますが、両方って・・・・; >改行マーク「Chr(13)&Chr(10)」迄が1行と考えるって事なんでしょうが初 心者には難しいくご教授お願い致します。 Dim strMoji As String Dim strChck As String strMoji = Me.内容 strChck = LenB(StrConv(strMoji, vbFromUnicode)) Me.txtMsg = "" If strChck >= 33 Then Me.txtMsg = "文字数がOverしてます。" Else Exit Sub   End If

  • 特定のセルの文字入力を半角英字の大文字にする方法

    セルB13~BK13に文字を入力する際に、全角小文字の英字や数字、半角小文字の英字や数字、全角大文字の英字や数字で入力した場合でも、自動で半角大文字の英字と数字に自動変換して、英字と数字の間に半角で1角の空欄を自動でしてくれる様にするVBAなどの方法はありますか? この際にどの様な形式の平仮名やカタカナや‐(ハイフン)が入力された場合は「平仮名やカタカナや‐は入力できません。」とエラーメッセージを表示させたいです。 ※例えば「ggg 501(半角小文字の英字)」や「ggg 501(全角小文字の英字)」や「GGG 501(全角大文字の英字)」と入力した場合でも自動で「GGG 501(半角大文字の英字)」と自動変換され英字と数字の間に1角の半角で空白が自動で設定してくれる感じです。 ※「じーじーじ 501(平仮名が含まれる)」や「ジージージー 501(カタカナが含まれる)」や「GGG-501(ハイフンが含まれる)」など入力させたらエラーメッセージを表示させます。 ※ちなみにこのシートには ''******************************************************************************* ' セル選択によるイベント '******************************************************************************* Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'カレンダーフォームのVBA If Intersect(Target, Range("BP1")) Is Nothing Then Exit Sub If MsgBox("日付を記入するためカレンダーを表示させます、よろしいでしょうか?", vbYesNo) = vbNo Then Exit Sub Else End If ' カレンダーフォームを起動する Call ShowCalendarFromRange2(Target) Dim ans As String ans = InputBox("指定した時間(〇〇:〇〇)を入力して下さい。") If ans = "" Then Exit Sub Range("CO14").Value = ans ans = InputBox("先ほど指定した時刻からの時間間隔(例えば5分なら「5」で1時間なら「60」を入力して下さい。 ") If ans = "" Then Exit Sub For Each c In Range("CO15:CO37") c.Value = Format(c.Offset(-1).Value + TimeValue((ans \ 60) & ":" & (ans Mod 60)), "hh:mm") Next End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A3,A4,A5,A6,A7,A8,A9,A10,A11,A42,A43,A44,A45,A46,A47,A48,A49,A50,A81,A82,A83,A84,A85,A86,A87,A88,A89,A120,A121,A122,A123,A124,A125,A126,A127,A128,A159,A160,A161,A162,A163,A164,A165,A166,A167,A198,A199,A200,A201,A202,A203,A204,A205,A206,A237:A245")) Is Nothing Then Exit Sub Cancel = True With Target(1) ' If .Value = "" Then .Value = Now() .NumberFormatLocal = "h:mm" Else .Value = "" End If End With End Sub のVBAが組み込まれています。

  • 入力規則について

    [環境] Windows2000 Access2000 ※スレ違いお許し下さい。同様の質問を下記URLで行ってます。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=744564 [問題点] Access2000で入力規則として「ひらがな」全角 「かたかな」全角 「英数字」半角 を自動で行い たいと思い一番簡単な手法を試行錯誤中です。 Dim i As Integer Dim ix As Integer Dim strChk As String Dim strMoji As String Dim strEisu As String Dim txtData As String Dim GetData As String strMoji = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" strEisu = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" txtData = Trim(Me.テキスト5.Value) For i = 1 To Len(txtData) strChk = Mid$(txtData, i, 1) For ix = 1 To Len(strMoji) If StrComp(StrConv(Mid$(strMoji, ix, 1), vbFromUnicode), _ StrConv(strChk, vbFromUnicode), vbBinaryCompare) = 0 Then _ strChk = StrConv(strChk, 4) If StrComp(StrConv(Mid$(strEisu, ix, 1), vbFromUnicode), _ StrConv(strChk, vbFromUnicode), vbBinaryCompare) = 0 Then _ strChk = StrConv(strChk, 8) Next ix GetData = GetData & strChk Next i Me.テキスト5.Value = GetData ●上記以外の解決方法を考えております。

  • カタカナのみを半角から全角に変換したいのですが

    VBAについて教えてください。 文字をHPにアップできるように、カタカナのみを半角から全角に変換したいのですが 何か良い方法はありますか? 文字は英字・ひらがな・カタカナ・漢字がランダムに入っています。 例えば Sub test() Dim a As String a = "aaaアアア<>BBB" End Sub の状態で。「アアア」のみを全角にするにはどうすればいいでしょうか? アルファベットは半角のままにしたいです。

  • ExcelVBA 全角と半角文字

    恐れ入ります。 ExcelVBAの質問ですが、 ********************************************************** Function AscEx2(strOrg As String) As String Dim strRet As String Dim intLoop As Integer Dim strChar As String strRet = "" For intLoop = 1 To Len(strOrg) strChar = Mid(strOrg, intLoop, 1) If (strChar >= "A" And strChar <= "Z") _ Or (strChar >= "a" And strChar <= "z") Then strRet = strRet & StrConv(strChar, vbNarrow) Else strRet = strRet & strChar End If Next intLoop AscEx2 = strRet End Function ********************************************************** 上記のコードで、カタカナを全角、アルファベットを半角にできたのですが、 下記のこの部分の意味がいまひとつ理解できません。 「strRet = "" strRet = strRet & StrConv(strChar, vbNarrow)」 どういった解釈になるのか、お分かりになられる方は、 ご教示を宜しくお願い致します。

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

  • 変数に特定の文字が含まれているなら(VBA)

    以前に質問した http://oshiete1.goo.ne.jp/qa4407128.html とは違うのですが 変数"あいうえお"に "あ"が含まれているなら "含まれています"と表示したいです。 Sub test() Dim strmoji As String strmoji = "あいうえお" If Find(strmoji) Like "*あ*" Then MsgBox "含まれています" End If End Sub 部分的に考えてみたのですが 「Sub、Function、または Property が定義されていません。(Error 35)」 が出てしまいます。 ご教授よろしくお願い致します。

  • IFステートメントで半角でも全角でもtrueとさせ

    IFステートメントで半角でも全角でもtrueとさせるには? Sub test1() Dim str As String str = "ABC"’←全角のA If str Like "*A*" Then ’←半角のA MsgBox "Aがあります" End If End Sub これで、半角Aもメッセージを表示させたいのですが、 マッチバイトみたいなのってありますか?

  • excel 文字抽出マクロの編集についてですが・・・

    マクロで指定した文字を含むデータを抽出するマクロを 作っていたのですが、うまく作動しません。 どこが悪いか教えてください。 Sub 指定した文字データの抽出() Dim strMoji As String strMoji = InputBox("検索文字を入力してください") strMoji = "*" & strMoji & "*" Sheets("Sheet2").Activate Cells.Clear With Sheets("Sheet1") .Range("A2").AutoFilter Filde:=3, criterial:=strMoji .Range("A2").CurrentRegion.Copy _ Destination:=Sheets("Sheet2").Range("A2") .Range("A2").AutoFilter End With Sheets("Sheet2").Columns("A:D").AutoFit End Sub

  • 【VBA】半角カタカナのみを全角にするには?

    http://bekkoame.okwave.jp/qa8979427.html こちらのページを参考にしたのですが カタカナのみ全角にしたいのですが 平仮名がカタカナになってしまいます。 正規表現と言うのがよくわからないので コピペで使ってますが Sub Sample2() Dim myStr As String Dim Match As Object, Matches As Object Dim CW As String With CreateObject("VBScript.RegExp") .Pattern = "[\uFF61-\uFF9F]+" '---(1) .Global = True myStr = "あああイイイ" If Len(myStr) > 0 Then Set Matches = .Execute(myStr) 'マッチしたすべての文字列を置換 For Each Match In Matches myStr = Replace(myStr, Match.Value, _ StrConv(Match.Value, vbWide)) '---(2) Next Match CW = myStr End If End With End Sub だと「あああ」は平仮名のままなのですが myStr = "のののノノノ" にすると、ひらがなの「ののの」が全角カタカナになってしまいます。 Sub test() Call KanaJisF("あああイイイ") End Sub Function KanaJisF(ByVal sSrc As String) As String Dim sTempW As String Dim sTempN As String Dim i As Long ' ' 全角カナに相当する文字コードを総当たりでループ For i = -31852 To -31936 Step -1 sTempW = Chr(i) ' 全角カナ変数に格納 sTempN = StrConv(sTempW, vbNarrow) ' 半角カナに変換して変数に格納 ' ' 半角カナ各文字が、文字列に含まれている場合、全角カナに置換 If InStr(1, sSrc, sTempN) Then sSrc = Replace(sSrc, sTempN, sTempW) Next i ' ' 半角長音、文字列に含まれている場合、全角長音に置換 sTempN = Chr(176) If InStr(sSrc, sTempN) Then sSrc = Replace(sSrc, sTempN, "ー") KanaJisF = sSrc End Function こちらのコードは、「あああ」も全角カタカナになりました。 "のののノノノ"も同様です。 平仮名は平仮名のままにしたいのですが そのような方法はありますか?