過去ログ

                                Page      17
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼文字認識  豆太 02/9/3(火) 9:25
   ┣Re:文字認識  yu-ji 02/9/3(火) 9:33
   ┃  ┗Re:文字認識  豆太 02/9/3(火) 10:06
   ┃     ┗Re:文字認識  yu-ji 02/9/3(火) 12:10
   ┗Re:文字認識  イケガミ 02/9/3(火) 9:54
      ┗どうもありがとうございます  豆太 02/9/3(火) 10:53
         ┗追加質問なんですが。。。  豆太 02/9/6(金) 10:25
            ┗Re:追加質問なんですが。。。  イケガミ 02/9/6(金) 11:35
               ┗Re:追加質問なんですが。。。  豆太 02/9/6(金) 11:53
                  ┣応用でいけますね。  yu-ji 02/9/6(金) 14:35
                  ┗Re:コード例  イケガミ 02/9/6(金) 15:02
                     ┗ありがとうございました。  豆太 02/9/6(金) 16:33

 ───────────────────────────────────────
 ■題名 : 文字認識
 ■名前 : 豆太
 ■日付 : 02/9/3(火) 9:25
 -------------------------------------------------------------------------
   お世話になります。

いつもいつも、低レベルな質問なんですが・・・・。
テキストボックスに値を入れ、入力された値が
数値か、文字かを確認には、『IsNumeric』関数があったんですが、
文字の中でも”あいうえお”と”あ1い2”のように、
文字のみと文字型の数字が入っている文字の区別をさせたいんですが
どうもいい方法が見つかりません。
どなたか、教えていただけませんか??

 ───────────────────────────────────────  ■題名 : Re:文字認識  ■名前 : yu-ji  ■日付 : 02/9/3(火) 9:33  -------------------------------------------------------------------------
   ▼豆太 さん:
>テキストボックスに値を入れ、入力された値が
>数値か、文字かを確認には、『IsNumeric』関数があったんですが、
>文字の中でも”あいうえお”と”あ1い2”のように、
>文字のみと文字型の数字が入っている文字の区別をさせたいんですが
>どうもいい方法が見つかりません。

テキストボックスの中の文字を1文字ずつチェックして、IsNumeric(CIntも
必要?)でTrueが一回でもあれば”混合”、一回もなければ”文字のみ”と
いうことで区別するというのは、どうですか?

 ───────────────────────────────────────  ■題名 : Re:文字認識  ■名前 : 豆太  ■日付 : 02/9/3(火) 10:06  -------------------------------------------------------------------------
   yu-ji さんありがとうございます。

>テキストボックスの中の文字を1文字ずつチェックして、IsNumeric(CIntも
>必要?)でTrueが一回でもあれば”混合”、一回もなければ”文字のみ”と
>いうことで区別するというのは、どうですか?

すいません。文字を1文字ずつチェックする方法を調べてみたんですが
見つけることができませんでした・・・。
教えてもらえませんか??

 ───────────────────────────────────────  ■題名 : Re:文字認識  ■名前 : yu-ji  ■日付 : 02/9/3(火) 12:10  -------------------------------------------------------------------------
   ▼豆太 さん:

すでにイケガミさんので完了したようですが、必要ないと思いますが、
参考までにってことで、一応レスしときます。

>>テキストボックスの中の文字を1文字ずつチェックして、IsNumeric(CIntも
>>必要?)でTrueが一回でもあれば”混合”、一回もなければ”文字のみ”と
>>いうことで区別するというのは、どうですか?

Function NumCheck(StrAr As String) As Boolean

  Dim cnt As Integer

  NumCheck = False
  
  For cnt = 1 To Len(StrAr)
    If IsNumeric(Mid(StrAr, cnt, 1)) Then
      NumCheck = True
      Exit For
    End If
  Next

End Function

*******************

Midで、何文字目(cnt)から1文字分の文字を取ってきて、IsNumericで
チェックし、もし数字だったら返り値をセットしてループを抜ける
・・・・・という感じです。

ちなみにチェックする文字列が長いようであれば、1文字ずつチェックしていく
この方法より、イケガミさんのレスにあったInStrを使った方が、多分
早いんじゃないかと思います(試してみてはないんで、分からないですが)
短かったら、どっちも大差ないかな。

 ───────────────────────────────────────  ■題名 : Re:文字認識  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/9/3(火) 9:54  -------------------------------------------------------------------------
   yu-ji さんから回答が入ってますが、せっかく作ったので。。

> 文字の中でも”あいうえお”と”あ1い2”のように、
> 文字のみと文字型の数字が入っている文字の区別をさせたいんですが
InStr 関数などを使って数字が存在しているかを確認する必要があると
思います。
【コード例】
Function InStrTest(strText As String) As Boolean
'--------------------------------------------------------------------
'  0〜9の数字が含まれていれば、Trueを返す
'--------------------------------------------------------------------
  Dim lngFlg   As Long
  Dim lngIdx   As Long
  
  For lngIdx = 0 To 9
    lngFlg = lngFlg + InStr(1, strText, lngIdx, vbTextCompare)
  Next lngIdx
  
  If Nz(lngFlg, 0) = 0 Then
    InStrTest = False
  Else
    InStrTest = True
  End If
  
End Function

もしくは、クエリの抽出条件で Like "*[0-9]*" のようにすれば
数字が含まれるものだけ抽出されます。

 ───────────────────────────────────────  ■題名 : どうもありがとうございます  ■名前 : 豆太  ■日付 : 02/9/3(火) 10:53  -------------------------------------------------------------------------
   イケガミさん、いつもお世話になっています。

やっと今、教えてもらった処理の解読ができました。
やっぱ、基礎をしっかりやらないと何を見ても自分には
複雑に見えてくるんです・・・。
また、くだらない壁にぶつかると思いますので、その時はよろしくお願いします。

 ───────────────────────────────────────  ■題名 : 追加質問なんですが。。。  ■名前 : 豆太  ■日付 : 02/9/6(金) 10:25  -------------------------------------------------------------------------
   度々お世話になります。。。

今、テキストボックスの入力確認をしようと、
数字のみの確認は、IsNumeric関数を使用し、
文字のみの確認は、以前にここで教えていただいた以下の方法で
やっています。(続きは下に)
Function InStrTest(strText As String) As Boolean
'--------------------------------------------------------------------
'  0〜9の数字が含まれていれば、Trueを返す
'--------------------------------------------------------------------
  Dim lngFlg   As Long
  Dim lngIdx   As Long
  
  For lngIdx = 0 To 9
    lngFlg = lngFlg + InStr(1, strText, lngIdx, vbTextCompare)
  Next lngIdx
  
  If Nz(lngFlg, 0) = 0 Then
    InStrTest = False
  Else
    InStrTest = True
  End If
  
End Function

ここで、文字にも”あああ”と”ああ###”のように
記号が入っている場合もあるんですが、
今回は、人の名前を登録させたいんで
ここの区別もさせたいのですが・・・。
助けていただけませんでしょうか??

 ───────────────────────────────────────  ■題名 : Re:追加質問なんですが。。。  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/9/6(金) 11:35  -------------------------------------------------------------------------
   > ここで、文字にも”あああ”と”ああ###”のように記号が入っている場合
使ってはいけない文字一覧を提示してください。

この場合は、yu-ji さん案をベースに作る必要があります。

 ───────────────────────────────────────  ■題名 : Re:追加質問なんですが。。。  ■名前 : 豆太  ■日付 : 02/9/6(金) 11:53  -------------------------------------------------------------------------
   イケガミ さん 度々すいません・・。
>使ってはいけない文字一覧を提示してください。

一覧です。

!”#$%&’()=〜|{}「」『』:;+・¥。、<>≪≫_
〔〕【】[]

 ───────────────────────────────────────  ■題名 : 応用でいけますね。  ■名前 : yu-ji  ■日付 : 02/9/6(金) 14:35  -------------------------------------------------------------------------
   ▼豆太 さん:
>イケガミ さん 度々すいません・・。
>>使ってはいけない文字一覧を提示してください。
>
>一覧です。
>
>!”#$%&’()=〜|{}「」『』:;+・¥。、<>≪≫_
>〔〕【】[]

この一覧を文字列なり配列なりに入れて、対象となるテキストの値に対し
1文字ずつInstrしてみるというのはどうですか?
文字列から1文字ずつ取るのは、前回の自分の書き込みを参考にしてみて
ください。(Mid関数を使うやりかた)
1文字を取れれば、あとは同じようにInStrでチェックするだけですね。

1文字ずつ取り出す:禁止文字列
チェックされる:テキスト


ちなみに、テキストに入力される文字の長さがそれほど長くない場合は、
チェックする方とチェックされる方を逆にして、チェックした方がいいと
思います。(時間短縮の為)

1文字ずつ取り出す:テキスト
チェックされる:禁止文字列

 ───────────────────────────────────────  ■題名 : Re:コード例  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/9/6(金) 15:02  -------------------------------------------------------------------------
   > 一覧です。
せっかく一覧をだしてもらいましたけど、1文字ずつ比較するのが
面倒だったので、まとめました。。
#結果的に比較対象の文字が増えてしまってますが。。

英数字・記号等が入っていれば 1 が返ってきます。
#アルファベットがOKということであれば、それ以外をする必要がありますが。。

Function lngInStrTest(strText As String) As Long
'--------------------------------------------------------------------
'  文字コード(33〜126) が入っていれば「1」
'  入っていなければ「0」を返す
'--------------------------------------------------------------------
  Dim lngIdx1   As Long
  Dim lngIdx2   As Long
  
  lngInStrTest = 0
  For lngIdx1 = 1 To Len(strText)
    For lngIdx2 = 33 To 126
      If Mid(strText, lngIdx1, 1) = ChrW(lngIdx2) Then
        lngInStrTest = 1
        Exit Function
      End If
    Next lngIdx2
  Next lngIdx1
  
End Function

 ───────────────────────────────────────  ■題名 : ありがとうございました。  ■名前 : 豆太  ■日付 : 02/9/6(金) 16:33  -------------------------------------------------------------------------
   イケガミ さん yu-ji さんご指導ありがとうございました。
また、壁にぶつかりましたら(泣)
ご指導よろしくお願いします。。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 17