|
> お疲れ様です。
>
> > ◆Try1 CopyPaste が 4.129 秒
> > ◆Try2 TransValue が 0.367 秒 でした。
> Try1のCopyPasteの方は、理解ができました!ありがとうございます。
>
> Try2の方は、今から取り掛かろうとおもっているのですが、
>
> 上記二つが、Try1に比べ大きく変わっているかと思います。
> ■-1,Application.ScreenUpdating = False/True
> は、更新をせず、一発で転記させるというのはわかるのですが、
Application.ScreenUpdating = False
は、画面の更新を抑止するものです。なので、
Try1() にも、 Try2()にも必要です。
シートに盛んにアクセスしてますから。
> > ◆Try1 CopyPaste が 4.129 秒
これは
Application.ScreenUpdating = False
を入れたあとの計測データです。
> ■-2,With Application
> は、よく理解できないのです。
> オブジェクトを返すプロパティ・・。
これまで Withステートメントを使われたことなかったですか?
> With Application
> c.Range("A1").Resize(8).Value = .Transpose(r.Range("A1:H1"))
> c.Range("C1").Resize(8).Value = .Transpose(r.Range("J1:Q1"))
> c.Range("F1").Resize(8).Value = .Transpose(r.Range("S1:Z1"))
>
> c.Range("I1").Resize(8).Value = .Transpose(r.Range("A5:H5"))
> c.Range("K1").Resize(8).Value = .Transpose(r.Range("J5:Q5"))
> c.Range("N1").Resize(8).Value = .Transpose(r.Range("S5:Z5"))
> End With
ここは、With 使わないと、こうなります。
c.Range("A1").Resize(8).Value = Application.Transpose(r.Range("A1:H1"))
c.Range("C1").Resize(8).Value = Application.Transpose(r.Range("J1:Q1"))
c.Range("F1").Resize(8).Value = Application.Transpose(r.Range("S1:Z1"))
c.Range("I1").Resize(8).Value = Application.Transpose(r.Range("A5:H5"))
c.Range("K1").Resize(8).Value = Application.Transpose(r.Range("J5:Q5"))
c.Range("N1").Resize(8).Value = Application.Transpose(r.Range("S5:Z5"))
このように、.Transposeのまえに 毎行 Applicationを書かないといけません。
もちろんそれでよいのですが、あ〜メンドイと思ったら、迷わず、
最初に一回だけ
With Application
と宣言しておけば、「.Transpose 」とピリオドから打ち込むだけで
ピリオドの前に Applicationオブジェクトがあるかのように動作します。
(Withステートメントを使ったほうが若干動作も速いです)
なお、With に対応する
End With をお忘れなく。
|
|