さて、私は奇妙なエラーに出くわしました.なぜそれが起こっているのか分かりません. このプログラムがどのように機能するかを説明しましょう。したがって、このプログラムでは、さまざまなものでいっぱいの配列を詰め込みます。最初の要素Array_WS(0)
はワークシート オブジェクト、次の要素はワークシートArray_WS(1)
のタイトル行番号などです。Array_WS
別のプロシージャに渡すと、すべて問題ありません。ただし、With ステートメントを入力するとWith Array_WS(0)
、要素がクリアされます...そうです。Sheet1 が割り当てられる直前にコードをステップ実行するWith Array_WS(0)
と、With ステートメントを入力するとすぐに、bamArray_WS(0)
が空になります。以下の例は、これを少し明確にするはずです。
コードは次のようになります。
問題
Sub WTF(Array_WS as Variant)
Dim greatValue%
With Array_WS(0)
greatValue = .Cells(1,1).Value2 <= this works even though Array_WS(0) is now empty
End With
greatValue = Array_WS(0).Cells(1,1).Value2 <= outside the With statement throws an exception
修正
私が思いついた回避策はこれだけです
Sub WTF(Array_WS as Variant)
Dim greatValue%, WS as Worksheet
Set WS = Array_WS(0)
With WS
greatValue = .Cells(1,1).Value2 <= this works
End With
greatValue = Array_WS(0).Cells(1,1).Value2 <= this also works
質問
回避策を発見しましたが、知りたいのですが、なぜこれが起こっているのですか?? . 渡される配列内のオブジェクトがどのように機能するかについて、何か不足していますか? それとも、私が取得していない With ステートメントに何かあるのでしょうか?
どんな助けでも大歓迎です!
ありがとう、ジャスティン