Home » Excel VBA Rangeオブジェクト » Offsetプロパティ » 別のセル・隣のセルのふりがなを取得するVBAのコード

別のセル・隣のセルのふりがなを取得するVBAのコード

対象:Excel2007, Excel2010, Excel2013

別のセル・隣のセルのふりがなを取得するVBAのコード

「フリガナ となり 取得 vba」
「エクセル vba 別のセルへふりがな表示」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

隣のセルのふりがな・別のセルのふりがなを取得する、VBA(Visual Basic for Applications)のコードを探している方による検索です。

参考になりそうなマクロをいくつかご紹介しておきます。

[スポンサードリンク]

左隣のセルのフリガナを取得するマクロの基本

以下のマクロで、アクティブなセルに、左隣のセルに入力されているデータのふりがなを入力することができます。
Sub 左隣のセルのフリガナを取得する_基本()
 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メソッドを実行しておくのが一つの方法です。
Sub 左隣のセルのフリガナを取得する_事前に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メソッドを実行する、という方法も考えられます。
Sub 左隣のセルのフリガナを取得する_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のコード

「Offsetプロパティ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.