「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
- Newer:Excelで最新の日付を取得する-MAX関数
- Older:wdHeaderFooterPrimaryとは
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » .TopLeftCell.Addressで「型が一致しません。」コンパイルエラーに