人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ExcelVBAについて
半角文字のチェックをやろうと思って
http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200807/08070013.txt
ここにあるような
If LenB(StrConv(.Value, vbFromUnicode)) <> LenB(.Value) Then
の判定でチェックしたのですが、
ある外字をstrConvで変換すると1バイト文字になるので上記の半角文字チェックにひっかかってしまいます。
この外字がチェックされず半角文字だけチェックするようにしたいのですが。
文字コードで判断すれば良いのでしょうか。
文字を文字コードに変換する関数にどんなものがあるのか、だとか
文字コードのどこからどこまでのコードが外字にあたるかなどもわかりません。よろしくお願いします


●質問者: ticaramoci
●カテゴリ:コンピュータ インターネット
✍キーワード:コード バイト 文字コード 関数
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● たかたか
●3ポイント

ある外字が何かわかっているなら、

If LenB(StrConv(.Value, vbFromUnicode)) <> LenB(.Value) Then

の後に、その外字は除外する判定(if文)を追加すればいいのでは?

◎質問者からの返答

ほかの外字でも同じようなことがありえるので汎用的に判定できる方法が良いです


2 ● kaiton
●90ポイント

http://okwave.jp/qa691058.html

http://okwave.jp/qa2890688.html?ans_count_asc=20

を参考に、外字を他の全角文字に置き換えて、その後に判定してはどうでしょうか?


それか、関数では外字も全角で判断されるのを確認できたので(Excel2003で)

別セルに=LEN(A1)*2<>LENB(A1) などの作業セルをVBAで参照するか?

参考

http://support.microsoft.com/default.aspx?scid=kb;ja;408879


3 ● ardarim
●100ポイント ベストアンサー

StrConvは、Unicodeとマルチバイト(日本語環境ではシフトJIS)との間の変換ですので、シフトJISで定義されていないUnicode文字は、外字に限らず全て ? などの文字に変換されてしまいます。


ここでいう「半角文字」が、いわゆる日本語環境で言うところの半角英数、半角カナというレベルのものであるなら、その範囲で1文字ずつチェックするのが確実だと思います。


例えば。

Function HasHalfChar(ByVal s As String) As Boolean

 Dim i As Integer
 
 HasHalfChar = False
 For i = 1 To Len(s)
 If IsHalfChar(Mid$(s, i, 1)) Then
 HasHalfChar = True
 Exit For
 End If
 Next i

End Function

Function IsHalfChar(ByVal ch As String) As Boolean

 Dim uc As Integer
 
 uc = AscW(ch)
 
 If uc >= 0 And uc < &H80 Then
 ' 半角英数(ASCII)
 IsHalfChar = True
 ElseIf uc >= &HFF61 And uc <= &HFF9F Then
 ' 半角カナ
 IsHalfChar = True
 Else
 IsHalfChar = False
 End If

End Function

シフトJISで定義されていない文字(例えば、?、?、?など日本語で使われない文字や記号、外字など)は基本的にStrConv、Asc、AscBなどの関数では正しく扱えませんので、正しく判定できません。AscWを使って、Unicode値で判定する必要があります。

?、?、?などの文字はVBAエディタ内では記述できないので、テストするのであれば適当なセルに入力して確認する必要があります。

Debug.Print HasHalfChar(Cells(1,1).Value)
◎質問者からの返答

返事が遅くなりましたが。

おかげさまで上記のコードでうまくいきました。

とともに大変勉強になりました。ありがとうございました

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ