現状に対し、つじつまが合わない事を含み、中途半端な説明なので、
原因がこれだけでは 判断つきません。
とりあえず、 エラーが出たときに
VBE 画面 エラー発生行 が 色反転して コード実行が停止すると思います。
その状態で、VBE画面
If tmp(Count(i), 2) 〜 で止まるなら
Count(i) の 部分にマウスオーバーすれば
【Count(i) = 7】 の様に、
停止時点の 変数 Count の インデックス が i の 値が表示されます。
次に、tmp の部分にマウスオーバー すれば
【tmp(ount(i), 2)=<インデックスが有効範囲にありません>】の様に 表示されます。
この場合は、
tmp に対し、tmp(7,2) の値を参照しようとし、7 または 2 の
インデックス の値が存在しないので、有効範囲にありません となっています。
7 または 2 は、ローカルウィンドで、
+ tmp
となっている + 部分をクリックすれば
- tmp
|---tmp(1)
| |-----tmp(1,1)
| -----tmp(1,2)
:
の様に、すれば、配列の次元数は確認できますから、
インデックスがその範囲になる様に、コードを修正しましょう。
---------------------------------------------------------------------------------------
記載の中で、つじつまが合わなかったり、修正した方が良い部分 を下記に記します。
先の 手段で インデックスの問題が解決したなら、下記への返答は不要です。
引用:
FunctionでCount()に格納する際に、4以下のものが入ることはありません。
またエラーが出ているわけではなく、ここで配列(tmp)の中身が消えてしまっているため、別場所で配列(tmp)を参照した際に、インデックスが有効範囲にありませんとエラーが出てしまっております。
・その Fucnttion は どんな処理をしているの?
・Count は Function の引数として渡している?
・Count と言う 関数が存在しています。
関数が呼ばれたのか、変数が呼ばれたのか、挙動不審になりますので
関数と同名は避けましょう。
引用:
別場所で配列(tmp)を参照した際に
このコード内で、tmp を宣言しているのに 別場所で、tmp を参照?? できませんよね?
tmp も 引数で渡している??
それとも、提示されたコード Subプロシージャ 内で宣言しているのではなく、
Sub プロシージャ外の Publicで宣言している??