Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12449 / 13645 ツリー ←次へ | 前へ→

【10454】宣言の仕方を教えて下さい agalinman 04/1/27(火) 15:31 質問
【10455】Re:宣言の仕方を教えて下さい つん 04/1/27(火) 15:45 回答
【10457】Re:宣言の仕方を教えて下さい agalinman 04/1/27(火) 15:58 お礼

【10454】宣言の仕方を教えて下さい
質問  agalinman  - 04/1/27(火) 15:31 -

引用なし
パスワード
   初めて投稿致します。agalinman と申します。
業務でVBAを使用していますが、ちょっと行き詰ってしまいましたので、
助言をいただければと思います。

特定の範囲で背景に色が塗られていないセルの数を求める
以下のようなユーザー定義関数を作成致しました。

======ここから

Function PreQA(s_range As String) As Integer

Dim icount As Integer
Dim rng As Range

'  Application.Volatile

  icount = 0
  For Each rng In Range(s_range)
    If rng.Interior.ColorIndex = xlNone Then
      icount = icount + 1
    End If
  Next
  PreQA = icount

End Function

======ここまで

ここで、例えばセルのB1〜B10の範囲での抽出結果を
セルA1に出力させるためには、
セルA1に

=PreQA("B1:B10")

と入力すれば、期待する答えは導き出せました。
ここで質問ですが、
入力にダブルコーテーションを必要としないようにするためには、
上記コードの s_range As String の箇所をどうように
宣言すればよろしいでしょうか?

要は、入力を

=PreQA(B1:B10)

とさせたいのです。
よろしくお願いします。

【10455】Re:宣言の仕方を教えて下さい
回答  つん E-MAIL  - 04/1/27(火) 15:45 -

引用なし
パスワード
   agalinman さん、こんにちは

>Function PreQA(s_range As String) As Integer

ここで、s_range As Range
と宣言して

>
>Dim icount As Integer
>Dim rng As Range
>
>'  Application.Volatile
>
>  icount = 0
>  For Each rng In Range(s_range)
  ここ↑を For Each rng In s_range とすればいいかと思います。 
>    If rng.Interior.ColorIndex = xlNone Then
>      icount = icount + 1
>    End If
>  Next
>  PreQA = icount
>
>End Function
>
>======ここまで

【10457】Re:宣言の仕方を教えて下さい
お礼  agalinman  - 04/1/27(火) 15:58 -

引用なし
パスワード
   agalinmanです。
つんさん、無事出来ました!

レスが早い上に一発でできてしまいますね。
敬服致します。


本当にありがとうございました。

12449 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free