Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1929 / 13645 ツリー ←次へ | 前へ→

【70992】全角文字を検出 Tomiちゃん 12/1/24(火) 16:21 質問[未読]
【70993】Re:全角文字を検出 とおりすぎ 12/1/24(火) 18:43 回答[未読]
【70996】Re:全角文字を検出 Tomiちゃん 12/1/25(水) 10:01 お礼[未読]
【70994】Re:全角文字を検出 Yuki 12/1/24(火) 20:01 回答[未読]
【70997】Re:全角文字を検出 Tomiちゃん 12/1/25(水) 10:09 お礼[未読]

【70992】全角文字を検出
質問  Tomiちゃん E-MAIL  - 12/1/24(火) 16:21 -

引用なし
パスワード
   御世話になります。

別システムにEXCELファイルを流し込む仕組みがあるのですが、そのファイル内の指定範囲に全角があるとシステムがダウンしてしまいます。(システムの問題とわかっているのですが会社の資金の問題で手が出せません。)
そこでファイルを作成の段階で全角を見つけたいのです。
Range("A1").CurrentRegion.Rows.Selectで選択した範囲内には絶対全角のひらがな、漢字、カタカナ、英数、記号、スペースがあってはなりません。
何しろ全角があってはなりません。
有った場合はその場所を示し警告を出したいのですが・・・。
どのようにしたらよろしいでしょうか?ご指南頂きたく、宜しくお願いします。

【70993】Re:全角文字を検出
回答  とおりすぎ  - 12/1/24(火) 18:43 -

引用なし
パスワード
   半角なら何でもいいの?
半角カタカナや記号、英数区別なし。

Function CheckDW(ByVal strTarget As String) As Boolean
 CheckDW = (LenB(StrConv(strTarget, vbFromUnicode)) = Len(strTarget))
End Function

Sub test()
 Debug.Print CheckDW("abc")
 Debug.Print CheckDW("123")
 Debug.Print CheckDW("\^-")
 Debug.Print CheckDW("aBc")
 Debug.Print CheckDW("¥^−")
 Debug.Print CheckDW("123")
End Sub

【70994】Re:全角文字を検出
回答  Yuki  - 12/1/24(火) 20:01 -

引用なし
パスワード
   ▼Tomiちゃん さん:
こんな感じでいいいですか?
セル単位でチェックするならばそのように書き換えてね。

Sub TEST2ByteChk()
  Dim v1 As Variant
  Dim lC As Long
  Dim i  As Long
  
  With Worksheets("Sheet1")
    lC = .Range("A1").CurrentRegion.Columns.Count
    For i = 1 To .Range("A" & Rows.Count).End(xlUp).Row
      v1 = .Cells(i, 1).Resize(, lC).Value
      v1 = WorksheetFunction.Index(v1, 0)
      v1 = Join(v1, vbTab)
      If Len(v1) = LenB(StrConv(v1, vbFromUnicode)) Then
        Debug.Print "半角"
      Else
        Debug.Print "全角交じり"
      End If
    Next
  End With
End Sub

【70996】Re:全角文字を検出
お礼  Tomiちゃん E-MAIL  - 12/1/25(水) 10:01 -

引用なし
パスワード
   ▼とおりすぎ さん:
>半角なら何でもいいの?
>半角カタカナや記号、英数区別なし。
>
>Function CheckDW(ByVal strTarget As String) As Boolean
> CheckDW = (LenB(StrConv(strTarget, vbFromUnicode)) = Len(strTarget))
>End Function
>
>Sub test()
> Debug.Print CheckDW("abc")
> Debug.Print CheckDW("123")
> Debug.Print CheckDW("\^-")
> Debug.Print CheckDW("aBc")
> Debug.Print CheckDW("¥^−")
> Debug.Print CheckDW("123")
>End Sub

とおりすぎさんへ
ご回答いただきまして、大変ありがとうございました。

VBAのド初心者ゆえ、すべてを理解するまで時間がかかりそうです。
イミディエイトで検知確認できました。
ありがとうございました。

【70997】Re:全角文字を検出
お礼  Tomiちゃん E-MAIL  - 12/1/25(水) 10:09 -

引用なし
パスワード
   ▼Yuki さん:
>▼Tomiちゃん さん:
>こんな感じでいいいですか?
>セル単位でチェックするならばそのように書き換えてね。
>
>Sub TEST2ByteChk()
>  Dim v1 As Variant
>  Dim lC As Long
>  Dim i  As Long
>  
>  With Worksheets("Sheet1")
>    lC = .Range("A1").CurrentRegion.Columns.Count
>    For i = 1 To .Range("A" & Rows.Count).End(xlUp).Row
>      v1 = .Cells(i, 1).Resize(, lC).Value
>      v1 = WorksheetFunction.Index(v1, 0)
>      v1 = Join(v1, vbTab)
>      If Len(v1) = LenB(StrConv(v1, vbFromUnicode)) Then
>        Debug.Print "半角"
>      Else
>        Debug.Print "全角交じり"
>      End If
>    Next
>  End With
>End Sub

Yukiさんへ
ご回答ありがとうございました。

行ごとの検知でイミディエイトに結果を確認できました。
また、全角のスペース(EXCEL上ではどこにあるかわからない)も、きちんと検知出来ておりました。
修正場所がわかりました。
大変助かりました。そしてこれからすべてを理解できるように勉強いたします。
ありがとうございました。

1929 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free