Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2007)
Sheet上で変換できる漢字がVBA では?に変換
投稿日時: 18/02/22 09:24:46
投稿者: o_taroh

Sheet上では変換できる「㐂」の漢字がVBAでは変換候補にはあるのですが、選択すると「?」に化けます同じIMEだと思いますがなぜでしょう?IMEプロパティの操作などで直るでしょうかその方法を教えてください。

回答
投稿日時: 18/02/22 10:16:21
投稿者: Suzu

Excel の 本体は Unicode 対応していますが
VBE 画面は、Unicode 未対応です。
 
なので表示できない文字等がでますので
 
str = ChrW(文字コード) & ChrW(文字コード) なんて処理をします。

投稿日時: 18/02/22 13:08:17
投稿者: o_taroh

Suzuさんご解答ありがとうございますUnicodeまでたどり着けますが、chr=strW() & strW()がよく解りません、コードを2つに分けるのでしょうか、Unicodeは16進数だと思いますが10進数に直す必要があるのでしょうか?
すいませんがもう少しご指導願えませんでしょうか。
ちなみに、「㐂」のコードは「U+3402」でした。

回答
投稿日時: 18/02/22 14:44:11
投稿者: Suzu

目的が判らないので、現象の原因に対しての解説にとどめています。
 
Excel では UNICODEはサポートされています。
がVBE ではサポートされていません。
 
 
例えば、
A1 に 明 を入れたい場合
 
VBEの画面では
 
RANGE("A1")= "明"
 
 とします。
 
これが、今回の文字の場合、VBE画面では表示できません。
 
RANGE("A1")= "?"
 
?に、当該文字をコピペしても?のままで、実行しても A1 には ? が表示されるだけです。
 
どうするかと言うと
 
Dim strValue As String
 
strValue = ChrW(13314) & ChrW(12434) & ChrW(-30616) & ChrW(31034)
Range("A1") = strValue
 
の様に、
変数に対し、一文字づつ文字コードを代入し文字列を生成し A1 に渡します。
 
 
10進 16進は 好みでも良いでしょう。
 
strValue = ChrW(&H3402) & ChrW(&H3092) & ChrW(&H8868) & ChrW(&H793A)

回答
投稿日時: 18/02/22 14:54:36
投稿者: めんたん

文字から文字コードを求めるには AscW関数をどうぞ。
 
A1 㐂
=AscW(Range("A1").Value)

投稿日時: 18/02/22 20:06:59
投稿者: o_taroh

suzuさんありがとうございました、わかりました。
今後もまたよろしくお願いします。