投稿者 ヤマダ  (学生) 投稿日時 2023/1/26 15:16:39
全角と半角及び送信不可文字を判別したいのですが、最終的には以下のプログラムと同じ挙動になるようにしたいです。

chg_kana_name = student_name
Do Until chg_kana_name = ""

 If AscB(Left(chg_kana_name, 1)) >= &HA0 Or AscB(Left(chg_kana_name, 1)) <= &H1F Then
                        w_fullname = w_fullname & "?"
                        chg_kana_name = Mid(chg_kana_name, 2, Len(chg_kana_name))
 Else
  Exit Do
  End If
Loop

まず、上のIF文でどういう理屈で半角と全角を判定しているのか教えていただきたいです。
下記が自分なりに考えたソースになります。

chg_kana_name = student_name
Dim test As Byte()

Do Until chg_kana_name = ""
 test = System.Text.Encoding.GetEncoding("Unicode").GetBytes(Left(chg_kana_name, 1)
 If test(0) >= &HA0 Or test(0) <= &H1F Then
                            w_fullname = w_fullname & "?"
                            chg_kana_name = Mid(chg_kana_name, 2, Len(chg_kana_name))

 Else
  Exit Do
  End If
Loop

半角の場合はtest()のindex1の値は必ず255になるのでしょうか?
質問したいことが複数ありましたので、わかりにくい投稿かと思いますが、よろしくお願いいたします。