Excel (VBA)

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

 
(Windows 10 Home : その他)
〇囲みの21以上が変換できない
投稿日時: 23/06/02 11:13:34
投稿者: o_taroh

@〜〇囲みの25までの文字を使いたいのですが〇囲みの21以上は?マークになり変換できません、Sheet上では変換可能ですからIME上にはあるはずですがプログラミング上では?になってしまいます、何か方法はないでしょうか、よろしくお願いします。

回答
投稿日時: 23/06/02 11:52:08
投稿者: QooApp

原因は文字が環境依存文字なので通常の指定方法で文字を表記させることができない為です。
 
下記URLを参考にしていただく方法で対応できます。
https://nkmrdai.com/vba-environment-dependent-characters/
 
リンク先のサンプル1と2を単純に結合しただけのサンプルコードですが、A1セルの中の文字コードをもとにA2セルへプログラム側から環境依存文字を出力しています。
 

Option Explicit

Sub 文字コード番号を調べる_A1セル()

   Dim txt As String

    txt = Cells(1, 1).Text
    
    Cells(2, 1).Value = ""
    
    Dim i As Long, c As String
    For i = 1 To Len(txt)
        c = Mid(txt, i, 1)
        Debug.Print c & " ; 文字コード→" & Hex(AscW(c))  'イミディエイトウィンドに出力されます(VBE上で Ctrl+Gで出現)
        
        'ChrW("&H" & Hex(AscW(c)))で出力
        Cells(2, 1).Value = Cells(2, 1).Value & ChrW("&H" & Hex(AscW(c)))
    Next
    
End Sub

 
参考までに〇付の21〜30の文字コードを以下列挙しておきます。
21→3251
22→3252
23→3253
24→3254
25→3255
26→3256
27→3257
28→3258
29→3259
30→325A

投稿日時: 23/06/02 18:48:10
投稿者: o_taroh

QooAppさんありがとうございました、環境依存文字についてよく知りませんでしたので勉強になりました、@〜25までSelect case で処理するので@〜Sと21〜25の書き方が一工夫必要でしょうか、頑張ってみます。