Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » .TopLeftCell.Addressで「型が一致しません。」コンパイルエラーに

.TopLeftCell.Addressで「型が一致しません。」コンパイルエラーに

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2207 ビルド15427.20210 Microsoft Store)

「Set rng = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address 型が一致しない」
という検索キーワードでアクセスがありました。

変数に代入を行うコード

Set rng = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address

を書いてみたものの、「型が一致しません。」コンパイルエラーが表示されてしまったので、その原因を調べていらしたのでしょう。

TopLeftCellプロパティの戻り値はRangeオブジェクト

コード「.TopLeftCell」や「.TopLeftCell.Address」の戻り値が何なのかを、しっかり意識しましょう。

TopLeftCellプロパティの戻り値は、拙著『理解するExcel VBA/図形操作の基本』の「chapter 2. Shapeの位置や大きさを操作する」等でも解説しているとおり、Shape等の左上隅のセルを表すRangeオブジェクトです。

TopLeftCellプロパティの戻り値がRangeオブジェクトですから、「.TopLeftCell.Address」は、RangeオブジェクトのAddressプロパティを使用しているコードということになります。

.TopLeftCell.Addressで「型が一致しませんエラー。」にならないようにするには

「Set rng = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address 型が一致しない」
と検索なさった方は、変数rngを「As Range」で宣言しているはずです。

Range.Addressプロパティの戻り値であるString型のデータを、Range型のオブジェクト変数rngに代入しようとしているために、

Set rng = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address

で「型が一致しません。」コンパイルエラーになってしまいます。

ですから、「.Address」を削除した、

Set rng = ActiveSheet.Shapes(Application.Caller).TopLeftCell

にすれば、「型が一致しません。」コンパイルエラーは出なくなるはずです。

最終更新日時:2022-09-09 17:40

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » .TopLeftCell.Addressで「型が一致しません。」コンパイルエラーに

「Shapesコレクション・Shapeオブジェクト」の記事一覧

検索


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

.