Home » ExcelVBA Rangeオブジェクト » デフォルトプロパティで単独Range取得時に実行時エラーが発生するか確認した結果

デフォルトプロパティで単独Range取得時に実行時エラーが発生するか確認した結果

対象:Excel2010, Excel2013, Windows版Excel2016

Rangeコレクションオブジェクトから単独のRangeオブジェクトをデフォルトプロパティで取得しようとしたときに、上位のワークシートを表すオブジェクトを取得するコードの書き方によって、
「実行時エラー'450' 引数の数が一致していません。または不正なプロパティを指定しています。」
実行時エラーが発生することを知りました。

[スポンサードリンク]

本当は引数を取らないタイプのRangeオブジェクトを返すプロパティで、必ずこの状態になるのか気になりテストしてみました。

デフォルトプロパティを使って単独のRangeを取得できる

私がテストしたところ以下のとおり、Worksheet.Cellsプロパティ、Range.MergeAreaプロパティ、ListObject.Rangeプロパティの場合は、Rangeオブジェクトのデフォルトプロパティを使って単独のRangeオブジェクトを取得できました。


Sub デフォルトプロパティで単独Rangeを取得できる()
 Dim rng As Range

 Set rng = ActiveSheet.Cells(1)
 Set rng = ActiveSheet.Range("A1").MergeArea(1)
 Set rng = ActiveSheet.ListObjects(1).Range(1) ' 要ListObject
End Sub

デフォルトプロパティを使って単独のRangeを取得できない

これに対して以下のSubプロシージャで使われているプロパティでは、
「実行時エラー'450' 引数の数が一致していません。または不正なプロパティを指定しています。」
が発生します。


Sub デフォルトプロパティによる単独Range取得で実行時エラー()
 Dim rng As Range

 'Set rng = ActiveSheet.CircularReference(1)
 'Set rng = ActiveSheet.UsedRange(1)

 'Set rng = ActiveSheet.Range("A1").CurrentArray(1)
 'Set rng = ActiveSheet.Range("A1").CurrentRegion(1)
 'Set rng = ActiveSheet.Range("A1").Dependents(1)
 'Set rng = ActiveSheet.Range("A1").DirectDependents(1)
 'Set rng = ActiveSheet.Range("A1").DirectPrecedents(1)
 'Set rng = ActiveSheet.Range("A1").Next(1)
 'Set rng = ActiveSheet.Range("A1").Precedents(1)
 'Set rng = ActiveSheet.Range("A1").Previous(1)
End Sub

引数を取らないタイプのRangeオブジェクトを返す多くのプロパティで、デフォルトプロパティに頼ってはいけないことがわかります。

その他のプロパティの場合

セル範囲を表すRangeオブジェクトを返すRangeSelectionSelectionは、Worksheetオブジェクトには存在せず、Windowオブジェクトに存在するので以下の形でテストしましたが、問題なく実行できます。
  Set rng = ActiveWindow.RangeSelection(1)
  Set rng = ActiveWindow.Selection(1)

行・列を表すRangeオブジェクトを返す各種プロパティを使った、以下のような場合も問題なく実行できます。
  Set rng = ActiveSheet.Columns(1)
  Set rng = ActiveSheet.Rows(1)
  Set rng = ActiveSheet.Range("A1").EntireColumn(1)
  Set rng = ActiveSheet.Range("A1").EntireRow(1)

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » デフォルトプロパティで単独Range取得時に実行時エラーが発生するか確認した結果

TrackBack:0

TrackBack URL

Home » ExcelVBA Rangeオブジェクト » デフォルトプロパティで単独Range取得時に実行時エラーが発生するか確認した結果

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

検索


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

.