Excel VBA質問箱 IV

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

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


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

【69266】繰り返し処理を早くする けい 11/6/16(木) 15:55 質問[未読]
【69267】Re:繰り返し処理を早くする かみちゃん 11/6/16(木) 16:05 発言[未読]
【69268】Re:繰り返し処理を早くする けい 11/6/16(木) 16:19 質問[未読]
【69269】Re:繰り返し処理を早くする U02 11/6/16(木) 20:35 発言[未読]
【69272】Re:繰り返し処理を早くする Jaka 11/6/17(金) 9:18 発言[未読]

【69266】繰り返し処理を早くする
質問  けい  - 11/6/16(木) 15:55 -

引用なし
パスワード
   お世話になります。

複数行の条件を探して処理をする方法で
早く処理ができる方法がありましたら教えてください。

以下のようにAAAというシートをアクティブにしたらピボットが更新されるまくろがあります。
E列に受注数、H列に使用数、I列に残数を計算させ、D列に集計という文字がある場合はその行に色を付けています。

Forを使わずDo Loopなどにした方が早く進みますか?
今は数分実行にかかってしますので、どこをどのように書き換えたら早くなりますでしょうか。

Sub ピボット更新()
  
  ActiveSheet.PivotTables("ピボットテーブル1").PivotCache.Refresh
 
Dim mRow As Long
Dim i As Long
Dim 受注数 As Integer
Dim 使用数 As Integer

Application.ScreenUpdating = False

  With Sheets("AAA")
    mRow = WorksheetFunction.Max(.Range("D" & .Rows.Count).End(xlUp).Row)
  End With

  Range("C5:I" & mRow).Interior.ColorIndex = xlNone
 
  For i = 5 To mRow
     
   If Cells(i, 5) <> "" Then
  
   受注数 = Cells(i, 5)

   If InStr(Cells(i, 4), "集計") >= 1 Then

   使用数 = Cells(i, 8)
  
     Range(Cells(i, 4), Cells(i, 9)).Interior.ColorIndex = 40
        
    Cells(i, 9).Value = 受注数 - 使用数
  
   End If
        
   Next i

 MsgBox "ピボットを更新しました"
 
Application.ScreenUpdating = True
 
End Sub

【69267】Re:繰り返し処理を早くする
発言  かみちゃん  - 11/6/16(木) 16:05 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>今は数分実行にかかってしますので、どこをどのように書き換えたら早くなりますでしょうか。

実行前に、再計算を手動にして実行して、
実行終了後に、再計算を自動に戻す

もしくは、配列変数に格納して処理する

で、少しは速くなると思います。

【69268】Re:繰り返し処理を早くする
質問  けい  - 11/6/16(木) 16:19 -

引用なし
パスワード
   かみちゃんさん

ご回答ありがとうございました。

Excelの計算方法を手動にしていても
結構時間がかかっています。

配列変数というのは、例えばどのような格納になりますか?
例をいただけたらありがたいです。
どうぞよろしくお願いします。


▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>今は数分実行にかかってしますので、どこをどのように書き換えたら早くなりますでしょうか。
>
>実行前に、再計算を手動にして実行して、
>実行終了後に、再計算を自動に戻す
>
>もしくは、配列変数に格納して処理する
>
>で、少しは速くなると思います。

【69269】Re:繰り返し処理を早くする
発言  U02  - 11/6/16(木) 20:35 -

引用なし
パスワード
   ▼けい さん:
>かみちゃんさん
>
>ご回答ありがとうございました。
>
>Excelの計算方法を手動にしていても
>結構時間がかかっています。
>
>配列変数というのは、例えばどのような格納になりますか?
>例をいただけたらありがたいです。
>どうぞよろしくお願いします。
>
>
>▼かみちゃん さん:
>>こんにちは。かみちゃん です。
>>
>>>今は数分実行にかかってしますので、どこをどのように書き換えたら早くなりますでしょうか。
>>
>>実行前に、再計算を手動にして実行して、
>>実行終了後に、再計算を自動に戻す
>>
>>もしくは、配列変数に格納して処理する
>>
>>で、少しは速くなると思います。

配列変数で検索すればすぐに出てきます。
それくらいはやりましょうよ。

【69272】Re:繰り返し処理を早くする
発言  Jaka  - 11/6/17(金) 9:18 -

引用なし
パスワード
   こう。

ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=36615;id=excel
下の記事番号に36615を入れてもいけます。

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