Filter関数を用いた結果、何も検索されなかった場合
Filter関数を用いた結果、何も検索されなかった場合
以下のプログラムを実行したところ、セルはまっさらのまま。
Sub Macro3()
Dim a As Variant
a = Array(1, 2, 3, 4, 5)
ActiveCell.Value = Filter(a, 8)
End Sub
そこで
If Filter(A,8) = "" Then ・・・(1)
ActiveCell.Offset(1, 0).value = False
Else表示
ActiveCell.Offset(1, 0).value = True
endif
を書き加えてみましたところ、
実行時エラー'13':
型が一致しません
とのエラーが出ます。
(1)を
If ActiveCell.value = "" Then
と書く分には問題ないのですが、だからと言って、Filter(A,8)の値は""で表せないのですね。
とりあえずこの五行はエラーが出ているので削除しました。
次に
ActiveCell.Offset(1, 0).Value = IsEmpty(Filter(A, 8))
を書き加えると、アクティブセルの一つ下は「False」となります。Filter(A,8)では何も抽出されないのですから、空か否かを問われたら「True」のはずなのですが・・・やはり何か戻り値があるのですね・・・
ではエラー値が戻っているのかと
ActiveCell.Offset(2, 0).Value = IsError(Filter(A, 8))
を書き加えると、「False」ですからエラー値ではありません。
If Filter(A,8) = Null Then ・・・(2)
ActiveCell.Offset(3, 0).value = False
Else表示
ActiveCell.Offset(3, 0).value = True
endif
を書き加えたところ、またも
実行時エラー'13':
型が一致しません
とのエラーが出ます。
(2)を
If Filter(A,8) = Error Then
と書き換えてみても同じです。
試しに(2)を
If Cvar(Filter(A,8)) = Null Then
としてみたり
If Filter(A,8) = Cvar(Null) Then
としてみたり
If Cvar(Filter(A,8)) = Cvar(Null) Then
としてみたりしましたが、同じエラーが出ます。
Ubound(Filter(A,8)の値は-1です。これをもってこの場合の戻り値とするしかないのでしょうか。filter関数の戻り値が分からないからUbound関数を使っていることがモロばれで、嫌なんです。
If Filter(A,8) = なんとか Then
のなんとかに入る戻り値をどなたか教えてください。
お礼
ありがとうございます。 まだまだ難しい事だらけで。