Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » Excel VBAのGetPhoneticメソッドはRangeではなくApplicationのメソッドですよ

Excel VBAのGetPhoneticメソッドはRangeではなくApplicationのメソッドですよ

動作検証バージョン:Windows 11 Home + 64bit Excel バージョン 2409(ビルド18015.20000クイック実行)ベータチャネル

Excel VBAのGetPhoneticメソッドに関して、間違ったコードを紹介しているWebページを見かけたので、記事にさせていただきます。

[スポンサードリンク]

GetPhoneticの間違ったサンプル

そのページには、以下のようなコードが紹介されていました。

Dim rng As Range
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1")
MsgBox rng.GetPhonetic.Text

このコードでは以下のような実行時エラーが発生します。

実行時エラー '438'
オブジェクトは、このプロパティまたはメソッドをサポートしていません。

RangeオブジェクトにはGetPhoneticという名前のメソッドは存在していないため、このような実行時エラーが表示されます。

オブジェクトブラウザーで「G」で始まるメソッドを探しても、上図のとおり「Group」しか見当たりません。「GetPhonetic」はRangeにはありません。

GetPhoneticはApplicationのメソッド

GetPhonecitメソッドは、Rangeオブジェクトではなく、Applicationオブジェクトのメソッドです。

以下のようなコードであれば実行時エラーが発生することなく、フリガナの「イトウ」がメッセージボックスに表示されます。

Sub GetPhonecitメソッドのサンプル()
 MsgBox Application.GetPhonetic("伊藤")
End Sub

なお、Application.GetPhoneticはExcel VBAのグローバルメンバーではありませんから、「Application.」を省略することはできません。

GetPhoneticの間違ったサンプルが紹介されている理由

何故「GetPhoneticの間違ったコードが紹介されているのか」ですが、AIに生成させたコードをテストすることなく書き写しているだけなのだろうと、私は推測しています。

例えばChatGPTに「Excel VBAのGetPhoneticメソッドの使い方を教えて」と質問すると、以下のような実行時エラーの発生するサンプルを返してきます。

Sub GetPhoneticExample()
    Dim rng As Range
    Dim phoneticText As String

    ' A1セルの範囲を指定
    Set rng = Range("A1")
    
    ' セル内のふりがなを取得
    phoneticText = rng.GetPhonetic
    
    ' 結果をメッセージボックスに表示
    MsgBox "A1のふりがな: " & phoneticText
End Sub

Claudeの場合は、以下のような動かないコードを生成します。

Sub GetCellPhonetic()
    Dim cell As Range
    Dim phonetic As String
    
    Set cell = ActiveCell  ' アクティブセルを使用
    phonetic = cell.GetPhonetic
    
    If phonetic = "" Then
        MsgBox "このセルにはフリガナが設定されていません。"
    Else
        MsgBox "セルの内容: " & cell.Value & vbNewLine & _
               "フリガナ: " & phonetic
    End If
End Sub

AIが間違った説明文(らしきもの)を生成することはよくありますが、それらを検証することなく書き写しただけなのでしょう。そういった正しくないページが、検索時に上位表示されてしまっているのが、2024年8月の現状です。

間違ったコードを掲載しているそのサイトは、プログラミングスクールのアフィリエイト収入を狙っているようもののようです。

最終更新日時:2024-08-30 19:24

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » Excel VBAのGetPhoneticメソッドはRangeではなくApplicationのメソッドですよ

「Applicationオブジェクト」の記事一覧

検索


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

.