Excel VBA質問箱 IV

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

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


2926 / 13646 ツリー ←次へ | 前へ→

【65249】文字検索 亜矢 10/4/30(金) 15:38 質問[未読]
【65250】Re:文字検索 Jaka 10/4/30(金) 16:16 発言[未読]
【65251】Re:文字検索 Jaka 10/4/30(金) 16:35 発言[未読]
【65252】Re:文字検索 kanabun 10/4/30(金) 16:41 発言[未読]
【65253】Re:文字検索 亜矢 10/4/30(金) 16:53 お礼[未読]

【65249】文字検索
質問  亜矢  - 10/4/30(金) 15:38 -

引用なし
パスワード
   よろしくお願いします。
文字を読んで他の文字と同じか調べるプログラムを作っています。
エクセルに表示されている文字の中であまり使われていない文字等を
変数に取り込むと"?”となっています。
 テキストボックス等に表示する場合は変数が"?"になっていても正しく表示されますが、変数の値は"?"では変数値どうしを比べる時は比べることができません。
解決方法を教えて下さい。"?"になる文字をこの投稿文に載せると文字化けして
しまいましたので、その文字はのせることができませんでした。

【65250】Re:文字検索
発言  Jaka  - 10/4/30(金) 16:16 -

引用なし
パスワード
   ▼亜矢 さん:
文字コードは私もよく解ってないので、メモしてあったもの。

Sub aaaaa()
MsgBox AscW("ゐ")  '12432
MsgBox ChrW(AscW("ゐ")) 'Unicode
MsgBox AscW("ゑ")  '12433
MsgBox ChrW(AscW("ゑ"))
End Sub

Sub チェック文字の場合()
Range("A1").Value = ChrW(10003)
MsgBox ChrW(10003) & vbLf & "メッセージボックスでは表示できない。"

MsgBox "A1の文字は、" & vbLf & AscW(Range("A1").Value)
End Sub

>になる文字をこの投稿文に載せると文字化けして
>しまいましたので、その文字はのせることができませんでした。
ひょっとすると文字化け文字をコピーしてメモ帳に貼り付けると
読める場合があるから、注釈して載せて見ても良かったと思います。

【65251】Re:文字検索
発言  Jaka  - 10/4/30(金) 16:35 -

引用なし
パスワード
   試してみたら、こんなんでできました

Dim st As String
st = ChrW(10003) '✓ ←チェック文字?テスト用に記載。

  Cells.Find(What:=st, After:=Range("A1"), LookIn:=xlFormulas, LookAt:= _
    xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
    , SearchFormat:=False).Activate

因みにチェック文字は、投稿欄に貼り付けたときはトーフ文字で、
アップ後、"✓"こんな感じの文字コードになってました。
       ↑
     これもうまく表示されないかも。

【65252】Re:文字検索
発言  kanabun  - 10/4/30(金) 16:41 -

引用なし
パスワード
   ▼亜矢 さん:
おじゃまします。

>エクセルに表示されている文字の中であまり使われていない文字等を
>変数に取り込むと"?”となっています。

Unicodeだけにある文字ですと、そうなりますね。

たとえば
[A1] リッター
[A2] センターライン (CとLを重ねたもの)
[A3] 華氏 (摂氏 ℃ の 華氏版)
[A4] Care of (c/o)
などなど...

これらの文字は Excelシートには表示されますが、
VBAウィンドウでは ? に変わります。

Sub Test1()
  Dim c As Range
  Dim ss As String
  Dim j As Long
  For Each c In [A1:A4]
    ss = c.Value
    Debug.Print ss,   '---イミディエイト・ウィンドウに出力
    For j = 1 To Len(ss)
      Debug.Print AscW(Mid$(ss, j, 1)); '文字コードを出力
    Next
    Debug.Print
  Next
End Sub
から分かるように、表示はできません。
表示はできませんが、変数ss にはちゃんとUnicodeが入っています。

その証拠に、[A1:A4]セルに上のような Unicode文字を打ち込んで、
変数ss に この文字列を代入して、となりのB列に変数 ss の内容を
貼りつけてみると、ちゃんと表示されます。

Sub Test2()
  Dim c As Range
  Dim ss As String
  For Each c In [A1:A4]
    ss = c.Value
    c(1, 2).Value = ss
  Next
 
End Sub

ということは、
変数での文字列比較、抽出はふつうに出来そうな気がしますが。
VBA内部の文字列処理は Unicode ですから。

【65253】Re:文字検索
お礼  亜矢  - 10/4/30(金) 16:53 -

引用なし
パスワード
   ▼kanabun さん:
>▼亜矢 さん:
>おじゃまします。
>
>>エクセルに表示されている文字の中であまり使われていない文字等を
>>変数に取り込むと"?”となっています。
>
>Unicodeだけにある文字ですと、そうなりますね。
>
>たとえば
>[A1] リッター
>[A2] センターライン (CとLを重ねたもの)
>[A3] 華氏 (摂氏 ℃ の 華氏版)
>[A4] Care of (c/o)
>などなど...
>
>これらの文字は Excelシートには表示されますが、
>VBAウィンドウでは ? に変わります。
>
>Sub Test1()
>  Dim c As Range
>  Dim ss As String
>  Dim j As Long
>  For Each c In [A1:A4]
>    ss = c.Value
>    Debug.Print ss,   '---イミディエイト・ウィンドウに出力
>    For j = 1 To Len(ss)
>      Debug.Print AscW(Mid$(ss, j, 1)); '文字コードを出力
>    Next
>    Debug.Print
>  Next
>End Sub
>から分かるように、表示はできません。
>表示はできませんが、変数ss にはちゃんとUnicodeが入っています。
>
>その証拠に、[A1:A4]セルに上のような Unicode文字を打ち込んで、
>変数ss に この文字列を代入して、となりのB列に変数 ss の内容を
>貼りつけてみると、ちゃんと表示されます。
>
>Sub Test2()
>  Dim c As Range
>  Dim ss As String
>  For Each c In [A1:A4]
>    ss = c.Value
>    c(1, 2).Value = ss
>  Next
> 
>End Sub
>
>ということは、
>変数での文字列比較、抽出はふつうに出来そうな気がしますが。
>VBA内部の文字列処理は Unicode ですから。
皆さんありがとうございました。
漢字を読み取るのでなくコードでやればできそうです。

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