『カタカナ→ひらがなに変換するVBA記述を追加』(NKK) Private Sub Worksheet_Change(ByVal Target As Range) Range("B:B").Replace what:="・", Replacement:="", LookAt:=xlPart End Sub このチェンジイベントマクロにカタカナ→ひらがなに変換する記述を追加してください。 B列に読み仮名でカタカナとひらがなが混在しています 「・」はトル詰めされます。 < 使用 Excel:Office365、使用 OS:Windows10 > ---- 「VBA カタカナをひらがなに変換」などで検索するなど、 質問される前に調べてみてはいかが? なお、Changeイベントプロシージャのなかでセルの値を変更すると、 それがまたイベントを発生させて、ある種のループになります。 EnableEventsプロパティを操作することで、それを回避できます。 これも検索してみて下さい。   (γ) 2022/10/15(土) 22:34:36 ---- B列に対してそうした変換するなら、 Changeイベントプロシージャーを使う必要はなく、 ボタンに登録して実行するだけいいのではないですか? 少なくとも今のコードでは、(処理内容の正しさとは別に) どのセルに変更があっても、何度でも変換が起きますよ。 無駄じゃないですか?   (γ) 2022/10/15(土) 22:41:22 ---- 頑張って検索してやってみましたが、二つ組み込むとなると至難の業でした マクロは一回きりではなく新規データをニュースやHP等からコピペ追加して行く度に発生して欲しいのです (NKK) 2022/10/15(土) 23:05:53 ---- 「VBA カタカナをひらがなに変換」で検索すれば StrConv関数で可能なのはすぐわかります。 例えば下記にサンプルコードがあります。 【EXCEL VBA | StrConv関数】文字列のひらがなとカタカナを変換する | ひらちんの部屋 https://hirachin.com/post-7920/ 「VBA Worksheet_Change」で検索すれば下記が最初にヒットします。 下記に特定セル範囲の値を変換するサンプルコードがあります。 「Worksheet.Change イベント (Excel) | Microsoft Learn https://learn.microsoft.com/ja-jp/office/vba/api/excel.worksheet.change 上記の2つ内容が理解できれば、コードは書けるのでは? チャレンジしてみてください。 (hatena) 2022/10/16(日) 04:35:06 ---- StrConvはいいけれど、今度は「一部文字が?と表示されるけどなんで?」という質問が来なければいいんだけど。 (とりあえず書く) 2022/10/16(日) 08:26:17 ---- 書いてから気づいた。読み仮名なら問題ないか。 > B列に読み仮名でカタカナとひらがなが混在しています (とりあえず書く) 2022/10/16(日) 08:28:23 ---- > B列に読み仮名でカタカナとひらがなが混在しています すでに入ってしまっているデータは、コードが判ればダブルクリックして訂正します そのリンク先のコードをいじってみましたがわからずじまいです やりすぎても頭が痛くなってしまうので、ズバリお答えいただけなければ諦めますので放置しておいてください 人間には能力の限界というものがございます (NKK) 2022/10/16(日) 08:43:29 ---- StrConvはユニコード文字には対応してないので、 それが含まれている場合は、? となる可能性はありますね。 ただ、 「B列に読み仮名でカタカナとひらがなが混在」 ということなので大丈夫かな。 2つのリンク先のコードを組み合わせると、 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("B:B")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub Application.EnableEvents = False Target.Value = StrConv(Target.Value, vbHiragana) Application.EnableEvents = True End Sub 複数セルを更新、貼り付けにしたりした場合は、更新されないので、 そういう場合も考慮するなら、もう少し修正は必要。 (hatena) 2022/10/16(日) 09:06:55 ---- ま、そもそも「カタカナ→ひらがな」にマクロが必要かって話でもあるような気もしますが。 Excel 2019 の配列数式だと =CONCAT(UNICHAR(IF(ABS(UNICODE(MID(B2,ROW(OFFSET(A1,0,0,LEN(B2))),1))-12491.5)<43,UNICODE(MID(B2,ROW(OFFSET(A1,0,0,LEN(B2))),1))-96,UNICODE(MID(B2,ROW(OFFSET(A1,0,0,LEN(B2))),1))))) 365 (環境ないんで参考までに / let が使えれば 2021 でも通るかな?) CONCAT(UNICHAR(let(cd,UNICODE(MID(B2,sequence(LEN(B2),1)),IF(ABS(cd)-12491.5)<43,cd-96,cd))) マクロでやりたいならこの数式を evaluate で実行させますね、自分なら。 Sub カタカナからひらがな() 対象セル = "B2" ' (let が使えれば)2021 / 365 (動作環境なし) ' f = "CONCAT(UNICHAR(let(cd,UNICODE(MID(" & 対象セル & ",sequence(LEN(" & 対象セル & "),1)),IF(ABS(cd)-12491.5)<43,cd-96,cd)))" ' Excel 2019 f = "CONCAT(" & _ "UNICHAR(" & _ "IF(" & _ "ABS(UNICODE(MID(" & 対象セル & ",ROW(OFFSET(A1,0,0,LEN(" & 対象セル & "))),1))-12491.5)<43," & _ "UNICODE(MID(" & 対象セル & ",ROW(OFFSET(A1,0,0,LEN(" & 対象セル & "))),1))-96," & _ "UNICODE(MID(" & 対象セル & ",ROW(OFFSET(A1,0,0,LEN(" & 対象セル & "))),1))" & _ ")" & _ ")" & _ ")" Debug.Print Evaluate(f) End Sub あ、エラーにならない保証はできません。 しかしVBAはいろいろと面倒だなぁ...JSなら一行でできた気がするんだけど (とりあえず書く) 2022/10/16(日) 09:34:13 ---- >しかしVBAはいろいろと面倒だなぁ...JSなら一行でできた気がするんだけど 実質つかってるはワークシート関数じゃないか VBAならSTRCONVで一行でしょう (えええ) 2022/10/16(日) 09:53:03