LoginSignup
1
0

More than 1 year has passed since last update.

日本語はQiita独占 Excel VBA アクセント付き発音記号のような分記要素つき文字を入力する

Last updated at Posted at 2023-02-25

ChrW & ChrWではない

Combining Diacritical mark (合成可能な分音記号)は長いので勝手に分記要素とする。(要素だから合成可能、分音記号->分記)
今回の記事は短いが、サロゲートペアのような chrw & chrwではないというのが最大のポイント。(2行で終わり)

正解は+

終わりでも良いが、記事にならないので続ける。
例えばIVS(異体字セレクタ)なら&で続く。+を使うものは知る限りこれだけである。
文字に対して加算する。&という結合ではなく加算として取り扱われている。&では成功しなかった。
まだ、文字ではなくコードでもよい。

念のためフォントMeiryoに変えて大きさを14に

とても見づらい。MS Pゴシックだとおかしい。などがあるのでフォントを変更する。
以下、見出しにしているのも見えないからである。

á アクサン・グラーブ

Sub InsertCobiningDiaCritcalMark_A()
Dim r As Range
'https://stackoverflow.com/questions/48819144/splitting-string-by-combining-character-groups
Set r = Range(ActiveCell.Address)
r.Clear
r.Font.Name = "Meiryo UI"
r.Font.Size = 14
r = ChrW(&H61) + ChrW(&H333) ' & ではなく足している
End Sub

a͜b レアな真ん中に来るタイプ

Sub InsertCobiningDiaCritcalMark_B()
Dim r As Range
'https://stackoverflow.com/questions/48819144/splitting-string-by-combining-character-groups
Set r = Range(ActiveCell.Address)
r.Clear
r.Font.Name = "Meiryo UI"
r.Font.Size = 14
r.Value = "a" + ChrW(&H35C) + "b"   ' & ではなく足している
End Sub

このタイプは文字の後ろに来るコードを判定し、分記要素ならまとめて1字とカウントできない。分記要素の次まで判定してカウントしなければならない。見た目では"a" + ChrW(&H35C) + "b"で1字だからだ。

ǽ 第一強勢のある発音記号

Sub InsertCobiningDiaCritcalMark_ae()
Dim r As Range
'https://stackoverflow.com/questions/48819144/splitting-string-by-combining-character-groups
Set r = Range(ActiveCell.Address)
r.Clear
r.Font.Name = "Meiryo UI"
r.Font.Size = 14
r = ChrW(&HE6) + ChrW(&H301)       ' & ではなく足している
End Sub

これで発音記号も思いのままに入力できる。毎回F5を押さなくてもデータとして保存できる。ポイントは&ではなく+という点である。

また "a" としているところはChrW(&HE6)やChr(&HE6)としてもよい。
ただ、何の文字に結合させるかわかった方が可読性が上がると思われる。

連続する場合には
r = r + ChrW(&HE6) + ChrW(&H301)
と続ける。rはr.valueでもよい。しかし文字を続ける場合でも通常の&ではなく、+加算であるというのがポイント。サンプルはSplitting string by combining character groups - stackoverflowの記事を参照。

Qiita Exclucive

日本語ベースではこの記事以外VBAで分音記号要素を合成して入力していることを取り上げているの記事は見つかっておらず、現時点ではここだけにしか記述がない。したがってQiita独占(日本限定)ということになる。
ただ、独占になっているのは需要が&u--n;&zannennagara;&arimasenn;🤔😞0️⃣🈳ということではある。一部未対応の字があるようだ。(嘘)

参考文献

Word と Outlook で言語のアクセント 記号を追加するためのキーボード ショートカット
ブログやワード・エクセルなどに英語の発音記号を入力・表示させる方法 | よびめも
コードポイントからUnicode文字を入力する方法 (Windows、Mac、Linux) - Qiita
アキュート・アクセント - Wikipedia
ユニコード ブロック - symbl.cc
Full Emoji List, v15.0
Dark corners of Unicode - Fazzy Notepad 12/09/2015ふりがなは分解する人がいないが、こういう自国語でも気づかない事がある。
Splitting string by combining character groups stackoverflow
MultiByteToWideChar
¥マークの除算と/マークの除算の違い
https://qiita.com/Q11Q/items/78cc192722105c053d1e
WidecharToMultibyte Win32 Api
MultibyteToWideChar
https://www.cadsharp.com/docs/Win32API_PtrSafe.txt

絵文字ですら2022年9月に発表されたものが2023年2月には表示されていない。
🪼 No 641 jellyfish 🩶 No 151 @ gray heart 🫠No 50 @ shaking face
`&#1FA75;' No 147 @ light blue heart
1FA00から始まる部分で、各ジャンルの最後に追加。アットマークがついているものが新規追加らしい。するとNoはバージョンによってずれることになる。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0