『マクロで特殊文字』(ゆう)
マクロで特殊文字って使えないのですか?
●を㊡にしたいのですが?になってしまいます。
方法有りましたら教えてください
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With Target
If Not Application.Intersect(.Cells, Range("B9:AF35")) Is Nothing Then
Cancel = True
.Offset(, 0).Value = IIf(.Offset(, 0).Value = "●", "", "●")
End If
End With
End Sub
< 使用 Excel:Excel2021、使用 OS:Windows11 >
文字化けするのは、VBAエディターがUnicode非対応だからです。 ㊡の代わりに ChrW(12961)としてください。 12961を得るには、ワークシートに㊡を入力し、UNICODE関数で求めることができます。
(xyz) 2025/12/11(木) 23:46:55
補足しておきます。
日本語環境ではVBAエディタは大昔から、CP932(Shift-JISのMicrosoft独自拡張)という文字コードを使っています。 それは、Excel本体がユニコードに対応するようになってからも、 VBAエディタは、後方互換性を考慮して従来のものが使い続けられています。 (今後もたぶん変更されることはないと思います。)
㊡と言う文字は、CP932(Shift-JISのMicrosoft独自拡張)で定義されていないので、?と表示されてしまう訳です。
そこで、ChrW 関数を使えば、これはユニコードにも対応しているので、その文字コードを指定することで (エディタ上に表示はできませんが)それを使うことはできます。 例えば、以下のようにです。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim s As String
s = ChrW(12961)
With Target
If Not Intersect(.Cells, Range("B9:AF35")) Is Nothing Then
Cancel = True
.Value = IIf(.Value = s, "", s)
End If
End With
End Sub
(シート上の特定セル(例:A1)にその文字を入れ、 s = Range("A1").Value として文字列変数sにセットすることもできます。)
こうすれば文字コードを調べなくてもOKですが、そのセルを消されないようにしないといけません)
# 不明な点があれば遠慮なく質問を続けてください。反応がないのが一番残念なことです。 (xyz) 2025/12/12(金) 21:02:50
(ゆう) 2025/12/12(金) 22:33:31
使用しているIMEの 「IMEパッド 文字一覧」で一覧とそれぞれのコードが分かります。 そのほか、"Unicode文字一覧表"でネット検索してみてはどうですか? (xyz) 2025/12/12(金) 23:06:04
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.