「フリガナ となり 取得 vba」
「エクセル vba 別のセルへふりがな表示」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
隣のセルのふりがな・別のセルのふりがなを取得する、VBA(Visual Basic for Applications)のコードを探している方による検索です。
参考になりそうなマクロをいくつかご紹介しておきます。
左隣のセルのフリガナを取得するマクロの基本
以下のマクロで、アクティブなセルに、左隣のセルに入力されているデータのふりがなを入力することができます。With ActiveCell
.Value = .Offset(0, -1).Phonetic.Text
End With
End Sub
アクティブセルの左隣のセルをOffsetプロパティで取得して「ActiveCell.Offset(0, -1)」、そのPhoneticオブジェクトのTextプロパティ「ActiveCell.Offset(0, -1).Phonetic.Text」を、アクティブセルの値「ActiveCell.Value」に代入しています。
ActiveCellが何度も出てくるのでWith句を使って整理したのが、
With ActiveCell
.Value = .Offset(0, -1).Phonetic.Text
という上記のコードです。
この考え方が基本ですが、このマクロを実行したときに、ふりがなではなくアクティブセルに入力されている文字がそのまま表示されてしまうケースもあります。
例えば、CSVファイルで上記のマクロを実行したようなケースです。
フリガナ情報を持たない左隣のセルで事前にSetPhoneticしてフリガナを取得するマクロ
Excel上でデータを入力した場合は、ふりがなの情報を持っていますから上記のマクロでフリガナを入力することができますが、CSVデータはふりがな情報を持っていないため、元の文字がそのまま入力されてしまうのです。
CSVデータで、別のセルのふりがなを取得するには、事前にRangeオブジェクトのSetPhoneticメソッドを実行しておくのが一つの方法です。With ActiveCell
.Offset(0, -1).SetPhonetic
.Value = .Offset(0, -1).Phonetic.Text
End With
End Sub
先にご紹介した基本のマクロの
.Value = .Offset(0, -1).Phonetic.Text
というコードの前に、アクティブセルの左隣のセルに、ふりがな情報を持たせるSetPhoneticメソッドを、
.Offset(0, -1).SetPhonetic
実行しています。
「ActiveCell.Offset(0, -1).SetPhonetic」で、アクティブセルの左隣のセルにふりがな情報が作られるので、「ActiveCell.Value = ActiveCell.Offset(0, -1).Phonetic.Text」というコードで左隣のセルのふりがなを、アクティブなセルに入力できるようになります。
フリガナ情報を持たない左隣のセルのフリガナをGetPhoneticメソッドで取得するマクロ
事前にRangeオブジェクトのSetPhoneticメソッドを実行するのではなく、ApplicationオブジェクトのGetPhoneticメソッドを実行する、という方法も考えられます。With ActiveCell
.Value = Application.GetPhonetic(.Offset(0, -1).Value)
End With
End Sub
Application.GetPhoneticメソッドでは、引数に指定された文字列のふりがなが取得できます。
「Application.GetPhonetic(ActiveCell.Offset(0, -1).Value)」というコードは、Application.GetPhoneticメソッドの引数に、アクティブセルの左隣のセルの値「ActiveCell.Offset(0, -1).Value」を指定していることになります。
その値をアクティブセルの値に入力するようにしてWith句で整理したのが、
With ActiveCell
.Value = Application.GetPhonetic(.Offset(0, -1).Value)
というコードです。
Home » Excel VBA Rangeオブジェクト » Offsetプロパティ » 別のセル・隣のセルのふりがなを取得するVBAのコード