|
▼化け猫 さん:
私からも再度...
> Dim MyV As Variant
> Set MyV = MyRange
Rangeオブジェクトをセットするんなら、変数 MyV は
Dim MyV As Range
と宣言してください。そこを なぜか? MyV As Variant で宣言するから
混乱に拍車がかかるんだと思います。
そして、Rangeオブジェクトの「値を」代入するなら MyV.Value のように
.Value プロパティを省略しない!
この2点に気をつけて、異なる結果になることがあるのは何故?
と、問題点を絞っていってください。
●Range型オブジェクトは As Variant でなく As Range で宣言する
●Rangeの「値」を使うなら .Value (または .Value2)プロパティを省略しない
>> 皆様
>
>お騒がせしております。
>そして、レスが大変遅くなり申し訳ありません。
>簡単に状況を再現してみましたので、報告させていただきます。
>
>以下の文をケース1~4とし、各々プログラムに組み込むとします。
>
>ケース1: MyV = MyF
> 結果、これでは描画されない。
>ケース2: MyV = MyF
> MyRange = MyV
> 結果、描画される。
>ケース3: MyV(1,1) = MyF(1,1)
> 結果、(1,1)の該当セルのみ描画される。
>ケース4: MyV(1,1) = MyF(1,1)
> MyRanage = MyV
> 結果、描画されるがDo Loopを抜けるとクリアされる。
>
>
>Option Explicit
>Declare Function GetTickCount Lib "kernel32" () As Long
>Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
>
>
>Sub kakunin()
>
> Dim MyRange As Range
> Set MyRange = Range("B4:G4")
>
> Dim MyV As Variant
> Set MyV = MyRange
>
> Dim MyF As Variant
> Set MyF = Worksheets("確認").Range("B5:G5")
>
> Dim StartTime As Long
> Dim WaitTime As Long
>
> StartTime = GetTickCount
> WaitTime = Range("B3")
>
> Do
>
> "ケース1~4"
>
> If (GetTickCount - StartTime) > WaitTime Then
>
> Exit Do
>
> End If
>
> DoEvents
>
> Loop
>
>End Sub
>
>どういう理屈なのか今一度考えてみようと思います。
>解説いただける方がいれば、よろしくお願いいたします。
|
|