投稿者 魔界の仮面弁士  (社会人) 投稿日時 2020/10/8 00:58:50
先に紹介した Like 演算子を使えば要件を満たせそうな気もしますが、いかがでしたか?
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/like-operator?WT.mc_id=DT-MVP-8907

'テキストの内容が 2 桁の数字なら、背景色が水色になる。 
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    If TextBox1.Text Like "##" Then
        TextBox1.BackColor = Color.Cyan
    Else
        TextBox1.ResetBackColor()
    End If
End Sub


この場合、2桁の数字…たとえば「12」や「12」と書かれたときに水色でお知らせします。

2 桁の数字ではない場合…たとえば「123」や「1」や「XYZ」などだと元の色に戻ります。

2桁の数字と言っても、「¹²」「₁₂」「⒈⒉」「①②」「➊➋」「❶❷」などは、水色になりません。


また、「Like "##"」のかわりに「Like "[0-9][0-9]"」とすれば、
半角 "12" は有効で、全角 "12" を無効にすることもできます。

同様にして、半角小文字 a~z は許容するが、半角大文字 A~Z は拒絶したいとか、
全角半角大文字小文字問わずアルファベット 2 文字であるかを調べたりすることもできます。


もしも Like 演算子だけでは判定しきれない、より細かい調査が必要な要件では、
『正規表現』というものを利用することもできます。VB から正規表現を扱うためには、
先に紹介した Regex クラスを使うことになります。興味があれば調べてみてください。


> 英数字を区別したいのです

どういう用途に使う物なのか、目的が分からないので細かく聞いてしまいますが、
今回の判定を行うにあたり、使われる文字種の範囲と文字数は明確になっていますか?

大文字・小文字・全角・半角・ウムラウトなどをどう考えるのか。
最初に想定された文字種以外が混入した場合はどうするのかなど。


条件あるいは目的が明確にならないと、コードを示しづらいです。
仕様が明確になっていれば、そのものズバリな判定処理を提供できるかもしれません。


> 英文字なら処理A
> 数字なら処理Bを実行したいのです

最低でも考えておくべき点として、処理Aでも処理Bでもないパターンの文字列が
渡されてきたときに、プログラムとしてはどのように扱われるべきであるのかを
定めておく必要があります。

たとえば 
Dim text As String = "5G"
という文字列があったとしましょう。
これは「英文字だけ」の文字列では無いですし、「数字だけ」の文字列でもありませんよね。
この場合、AとBどちらの処理が行われるのでしょうか。
下記の振る舞いの中に該当するものはありますか?

🔹 処理A に分類したい。(アルファベット "G" を含んでいるから)
🔹 処理B に分類したい。(数字 "5" を含んでいるから)
🔸 処理C という、また別の分類に割り当てたい。(数字のみでもアルファベットのみでもない)
⚠ そもそもそんなデータは来ない。来たら異常データということで、例外を Throw して良い。


仮に「アルファベット 2 文字」だとしても、穿った書き方をすれば、こんな文字列もありえるわけで…。
'左から、Bold(serif) / Bold(sans) / Italic(serif) / Italic(sans) / Bold-Italic(serif) / Bold-Italic(sans) / Narrow / FullWidth 
Dim samples() As String = {"𝐕𝐁""𝗩𝗕""𝑉𝐵""𝘝𝘉""𝑽𝑩""𝙑𝘽""VB""VB"}