Excel VBA質問箱 IV

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

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


885 / 13645 ツリー ←次へ | 前へ→

【77735】処理速度の向上 おさむ 15/12/11(金) 13:24 質問[未読]
【77737】Re:処理速度の向上 γ 15/12/12(土) 10:00 発言[未読]
【77744】Re:処理速度の向上 おさむ 15/12/14(月) 10:33 発言[未読]

【77735】処理速度の向上
質問  おさむ  - 15/12/11(金) 13:24 -

引用なし
パスワード
   EXCELのセルに入力されている文字の文字色、サイズなどを判別しなくてはいけません。
Charactersを使用するので処理速度が遅くなるのはしょうがないとあきらめています。

ただ、下記のプログラムをブックを開いてすぐに実行する場合と
ブックを開いて何処でもいいからセルの文字を編集してから実行する
のでは処理速度が違います。

前者の処理速度:50秒
後者の処理速度:18秒

この理由が判りません。
この理由をEXCELの仕様だからと無理矢理に納得したとして、この仕様を
利用して処理速度を早くさせる方法はあるのでしょうか?

前提としてA列の1行から1000行までのセルに全て1000文字入力しています。

Private Sub cmdInput_Click()
  Dim StartTime As Variant
  Dim StopTime As Variant
  Dim lCnt As Long
  Dim lNum As Long
  
  StartTime = Time
  
  For lNum = 1 To 10000
    For lCnt = 1 To ActiveSheet.Cells(lNum, 1).Characters.Count
    Next
  Next
  
  StopTime = Time
  StopTime = StopTime - StartTime
  
  MsgBox "処理時間:" & Minute(StopTime) & "分" & Second(StopTime) & "秒"
End Sub

例えばこのStartTime = Timeの前にプログラムでセル編集しても遅いままでした。
また、SendKeys "{F2}", TrueをStartTime = Timeの前に記述しても遅いままでした。

宜しくお願い致します。

【77737】Re:処理速度の向上
発言  γ  - 15/12/12(土) 10:00 -

引用なし
パスワード
   確かに掛かる時間にばらつきがあることは確認しました。
遅くなる理由を解明するよりも、
> EXCELのセルに入力されている文字の文字色、サイズなどを判別しなくてはいけません。
> Charactersを使用するので処理速度が遅くなるのはしょうがないとあきらめています
という当面の具体的な課題を説明されたらどうですか?
判定するにも効率のよい方法が工夫できるはずです。

【77744】Re:処理速度の向上
発言  おさむ  - 15/12/14(月) 10:33 -

引用なし
パスワード
   γ様

返信ありがとうございます。

申し訳ございません。

>ただ、下記のプログラムをブックを開いてすぐに実行する場合と
>ブックを開いて何処でもいいからセルの文字を編集してから実行する
>のでは処理速度が違います。

この理由が一番知りたかったことで、知ってらっしゃる方がいたらと
思い投稿致しました。

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