質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

757閲覧

VBAで読み仮名をひらがなで入力する

AGUA_Channel

総合スコア14

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/09/28 15:19

編集2021/09/28 15:48

実現したいこと

ボタンクリックで以下の表のようにA列をセルが空白のときにひらがなで挿入される機能を作成。


【1】

ABC
1いろはにおえどちりぬるをイロハニオエドチリヌルヲ色は匂えど散りぬるを
2イロハニオエ色は匂え
3つきにむらくもはなにかぜツキニムラクモハナニカゼ月に叢雲華に風
4つきにむらツキニクサムラ月に叢

【2】- ボタンクリック後に実現したいもの

ABC
1いろはにおえどちりぬるをイロハニオエドチリヌルヲ色は匂えど散りぬるを
2いろはにおえイロハニオエ色は匂え
3つきにむらくもはなにかぜツキニムラクモハナニカゼ月に叢雲華に風
4つきにむらツキニクサムラ月に叢

備考

  • 【1】にてA列になにも入っていない場合は条件(ソースコード参照)を満たす限りB列の内容通りにA列にひらがなでの読み仮名を挿入する
  • 【1】のB4は直接修正、【1】で文字列が挿入されていたことにより【2】で読み仮名(ひらがな)を挿入しない
  • 【1】のA2が空白だったことにより、【2】でひらがなが挿入される
  • B列は[GetPhoneticf]で片仮名のフリガナを表示

前提

C列にルビをふって出力する方法は不可

発生している問題

以下のように、A4がボタンクリック時に反映されてしまう

【2】- 現状

ABC
1いろはにおえどちりぬるをイロハニオエドチリヌルヲ色は匂えど散りぬるを
2いろはにおえイロハニオエ色は匂え
3つきにむらくもはなにかぜツキニムラクモハナニカゼ月に叢雲華に風
4つきにくさむらツキニクサムラ月に叢

該当のソースコード

vba

1Sub ConvertHiragana() 2 3 Dim i As Integer 4 i = 1 5 6 'ループ開始 7 Do 8 9 '空白箇所は記入する 10 If Cells(i, 1) = "" Then 11 'ひらがなに変更する 12 Worksheets("記入箇所").Cells(i, 1) = StrConv(Worksheets("記入箇所").Cells(i, 2), vbHiragana) 13 End If 14 15 '下のセルを参照させ、確認する 16 i = i + 1 17 18 'iの下が空白のとき終了する 19 If Worksheets("記入箇所").Cells(i, 2) = "" Then 20 Exit Do 21 End If 22 23 Loop 24 25End Sub

備考

  • セル[i,2]の2つ以上下のセルに値が入る状況はありません

試したこと

上記コードをデバック(ステップインで実施)したところ[実現したいころ]同様に正常に動作したが、ボタンで動作させると[発生している問題の状態]になる。

補足情報(FW/ツールのバージョンなど)

Excel 2019
標準モジュールに記述

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2021/09/28 15:32

Excel 2013 で提示のコードを試しましたが問題は再現しませんでした。
guest

回答1

0

ベストアンサー

VBA

1Sub ConvertHiragana() 2 3 Dim i As Integer 4 i = 1 5 6 'ループ開始 7 Do 8 9 '空白箇所は記入する 10 If Worksheets("記入箇所").Cells(i, 1) = "" Then 11 'ひらがなに変更する 12 Worksheets("記入箇所").Cells(i, 1) = StrConv(Worksheets("記入箇所").Cells(i, 2), vbHiragana) 13 End If 14 15 '下のセルを参照させ、確認する 16 i = i + 1 17 18 'iの下が空白のとき終了する 19 If Worksheets("記入箇所").Cells(i, 2) = "" Then 20 Exit Do 21 End If 22 23 Loop 24 25End Sub

投稿2021/09/28 15:55

jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問