| 
    
     |  | ▼化け猫 さん: 
 私からも再度...
 
 >  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
 >
 >どういう理屈なのか今一度考えてみようと思います。
 >解説いただける方がいれば、よろしくお願いいたします。
 
 
 |  |