プロが教えるわが家の防犯対策術!

Function mycount(y As Range)
Dim num As Integer
Dim c As String
Dim a As Range
c = y.Address
For Each a In Range(c)
If a.Text = ">" Then
num = num + 1
End If
Next a
mycount = num
End Function

この関数を定義して,ワークシート上で=mycount("範囲")と入力するとその範囲内に">"のマークがいくつあるかを返します。この場合,引数yで指定された範囲のアドレスをcに入れていますが,yのアドレス取得せずにfor each a in range(y)としても正しい値を返してくれません。なぜでしょうか?

また同じような問題で(サブプロシージャで)
dim dat as range
set dat = application.inputbox()
とした時,このdatにはいったい何が入っているのですか?

A 回答 (1件)

>yのアドレス取得せずにfor each a in range(y)としても正しい値を返してくれません。



for each a in y が正しいでしょう。
y はRange オブジェクトなので、改めてRange()に入れる必要はありません。

>set dat = application.inputbox()

application.inputbox() の戻り値(値の取得方法)として、セル情報(Range)を取得する事が可能です。
そのような指定がしてあれば、選択されたセル(範囲)の情報を入れる事が可能です。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。
なるほど,yはRangeオブジェクトだったからRange(y)とした場合に不具合が起きてしまったのですね。納得いきました。

お礼日時:2006/10/03 00:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A