Home » ExcelVBA Rangeオブジェクト » セル数式 » VBAで配列数式かどうかを判定する-Range.HasArray

VBAで配列数式かどうかを判定する-Range.HasArray

対象:Excel2007, Excel2010, Excel2013

「excel2010 vba 数式が配列数式かどうか」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

セルに入力されている数式・計算式が、配列数式かどうかを判定するExcel VBA(Visual Basic for Applications)のコードを探している方による検索です。

配列数式かどうかは、RangeオブジェクトのHasArrayプロパティで調べることができます。

配列数式があるかを判定するExcelマクロ

オブジェクトブラウザーで確認すると、上図のとおりHasArrayプロパティの戻りはVariantになっていますが、配列数式が存在しているときはTrueを返してきます。

[スポンサードリンク]

アクティブセルが配列数式かを判定するサンプルマクロ

以下のようなマクロで、アクティブなセルに配列数式が入力されているかどうかを判定することができます。


Sub 配列数式かどうかを判定する_アクティブセル()

 If ActiveCell.HasArray = True Then
  MsgBox "配列数式です!"
 Else
  MsgBox "配列数式ではありませんよ。"
 End If

End Sub

ActiveCellプロパティでアクティブなセルを表すRangeオブジェクトを取得して、そのHasArrayプロパティを調べています。

If文の、
 If ActiveCell.HasArray = True Then
の部分は、特にプログラミグに慣れた方は、
 If ActiveCell.HasArray Then
という書き方をすることが多いはずですが意味は同じです。

アクティブシートに配列数式が存在するかを判定するサンプルマクロ

以下のようなマクロで、アクティブなシートに配列数式が存在しているかどうかを調べることができます。


Sub 配列数式が存在するかどうかを判定する_アクティブシート()

 If Cells.HasArray = True Then
  MsgBox "アクティブなシートに配列数式が存在します!"
 Else
  MsgBox "アクティブなシートに配列数式は存在していません。"
 End If

End Sub

Cellsプロパティに引数を指定しないことで、アクティブなシートの全セルを表すRangeオブジェクトを取得して、そのHasArrayプロパティを調べています。

アクティブブックに配列数式が存在するかを判定するサンプルマクロ

以下のようなマクロにすれば、アクティブなブックに配列数式が存在しているかどうかを調べられます。


Sub 配列数式が存在するかどうかを判定する_アクティブブック()

 Dim ws As Worksheet
 Dim flg As Boolean

 flg = False
 For Each ws In Worksheets
  If ws.Cells.HasArray = True Then
   flg = True
   Exit For
  End If
 Next ws

 If flg = True Then
  MsgBox "アクティブなブックに配列数式が存在します!"
 Else
  MsgBox "アクティブなブックに配列数式は存在していません。"
 End If

End Sub

配列数式があるかどうかを表す変数・flgをFalseにしておいてから、
 flg = False

アクティブなブックの全ワークシートにFor Each~Nextループを回し、
 For Each ws In Worksheets

各ワークシートのCelllsプロパティで全セルを表すRangeオブジェクトを取得してHasArrayプロパティを調べ、
  If ws.Cells.HasArray = True Then

配列数式が含まれていたら、変数・flgの値を変更して、For Each~Next文を抜けます。
   flg = True
   Exit For
  End If

その後、変数・flgの値に応じてメッセージを表示しています。
 If flg = True Then
  MsgBox "アクティブなブックに配列数式が存在します!"
 Else
  MsgBox "アクティブなブックに配列数式は存在していません。"
 End If

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » セル数式 » VBAで配列数式かどうかを判定する-Range.HasArray

TrackBack:1

TrackBack URL
配列数式を解除して値を代入するExcelマクロ from インストラクターのネタ帳
セルに入力されている配列数式を解除して値を代入するExcel(エクセル)マクロをご紹介しています。

Home » ExcelVBA Rangeオブジェクト » セル数式 » VBAで配列数式かどうかを判定する-Range.HasArray

「セル数式」の記事一覧

検索


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

.