Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


15542 / 76738 ←次へ | 前へ→

【66672】Re:集計方法を教えてください
発言  kanabun  - 10/9/23(木) 17:13 -

引用なし
パスワード
   ▼Yuki さん:

>>理屈から言うとUsedRangeのほうが早そうですね。
>
>試す毎に値が変化します。
>UsedRangeが早くなったりCellsが早くなったりです。
>どっちにしても体感できる値ではなさそうです。

Yukiさん、検証ご足労かけます
ごめんなさい、どうチェックしたらよいか分からなくなりました...

実は、つい最近
>   With Worksheets("Sheet2")
>     .Cells.ClearContents
と同じようなコードを検証していて
ステップ実行していったら、
>     .Cells.ClearContents
の行で体感的にとても時間がかかってたので、今回の発言と
なりました。

で、こちらで以下のようなコードでテストしてみたところ
'---------------------------------------------
Declare Function timeGetTime Lib "winmm.dll" () As Long

Sub myTest1() 'Cells プロパティ
 Dim t&
 '準備
 Sheets(2).Cells.Copy Sheets(1).Cells(1)
 
 t = timeGetTime()
 Sheets(1).Cells.ClearContents
 Debug.Print "'cells"; timeGetTime() - t
 
 Sheets(1).UsedRange.Clear
End Sub

Sub myTest2()  'UsedRange プロパティ
 Dim t&
 '準備
 Sheets(2).Cells.Copy Sheets(1).Cells(1)
 
 t = timeGetTime()
 Sheets(1).UsedRange.ClearContents
 Debug.Print "'Used"; timeGetTime() - t
 
 Sheets(1).UsedRange.Clear
End Sub

結果は
'Used 15
'cells 15
'Used 16
'cells 16

'cells 0
'Used 0
'cells 0
'Used 0
というものでして、まるで差が出ませんでした。
きっとテストのしかたが悪いのだと思います。
それとも【ここが重要なところですが】
ClearContentsメソッドには Cellsプロパティで シートの
全範囲を指定しても、自動で UsedRangeに範囲限定する機能が
備わってるのでしょうか?

クリアでなく、【値Copy】のときには Cellsと UsedRangeは
たしかにちがいます。
他の掲示板で 某回答者の発言ですが、
---------------------------------- <引用>
> Cells.Value = Cells.Value

最近のPCだと余裕でできるんですかね?
当方のへっぽこPCだと、あっさりメモリ不足になりますけど。
最近のPCだとExcelで使用できるメモリ量も多いのでしょうか?

65,536×256=16,777,216個の要素を持つVariant型の二次元配列を
取得しようとする処理(右辺の評価)で、当方ではコケます。
コケなくても、相当にしんどい処理になると思いますので、
UsedRangeとかで範囲を絞った方がよろしいかと。

個人的には、コピー→値貼り付け→CutCopyMode = True/False
の方が、高速ですし、間違った処理(データ型変換)もしませんし、
接頭辞(')を落としてしまうこともないですし、データの
文字数制限(2003だと1データ911文字まで)もありませんので、
そちらをおすすめします。
------------------------------------ </引用>

この事例と ClearContents のときとは、やはり違うんですかね

ご無礼 しました。

0 hits

【66664】集計方法を教えてください コロネ 10/9/23(木) 3:56 質問
【66666】Re:集計方法を教えてください かみちゃん 10/9/23(木) 7:59 発言
【66667】Re:集計方法を教えてください Yuki 10/9/23(木) 10:50 発言
【66668】Re:集計方法を教えてください kanabun 10/9/23(木) 10:58 発言
【66669】Re:集計方法を教えてください Yuki 10/9/23(木) 15:28 発言
【66670】Re:集計方法を教えてください Yuki 10/9/23(木) 15:39 発言
【66672】Re:集計方法を教えてください kanabun 10/9/23(木) 17:13 発言
【66678】Re:集計方法を教えてください kanabun 10/9/24(金) 9:30 発言
【66681】Re:集計方法を教えてください コロネ 10/9/24(金) 22:08 お礼

15542 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free