Excel VBA質問箱 IV

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

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


3219 / 13646 ツリー ←次へ | 前へ→

【63511】データベース書込み速度アップについて たかさん 09/11/14(土) 14:27 質問[未読]
【63512】Re:データベース書込み速度アップについて りん 09/11/14(土) 18:33 発言[未読]

【63511】データベース書込み速度アップについて
質問  たかさん  - 09/11/14(土) 14:27 -

引用なし
パスワード
   3千行、50列位のデータベースをワークに作成しています。
ユーザーフォームにより入力したデータを行ごとに書き込むのですが、
データが多くなるにつれ、処理速度が極端におそくなりました。
ワークシートに書き込むのに処理の早い方法はないのでしょうか。
テキストデータに書き出す方法もあるようですが。

コードは

  If Tdat(7) <> "" Then               
    Sheets(shtSogo).Cells(ToRow, 1).Value = WrPhToti
    For i = 2 To 48
      ActiveSheet.Cells(5, i).Value = Tdat(i)       
      ActiveSheet.Cells(ToRow, i).Value = Tdat(i)
    Next i
  Else
    GoTo 処理終了
  End If
  
  If Kdat(8) <> "" Then      
    ActiveSheet.Cells(KoRow, 1).Value = Kdat(1)  
     For i = 2 To 15
      ActiveSheet.Cells(2001, i).Value = Kdat(i)
      ActiveSheet.Cells(KoRow, i).Value = Kdat(i)
     Next i
  End If

  If Odat(4) > 0 Then      
    ActiveSheet.Cells(OtuRow, 1).Value = Odat(1)
     For i = 2 To 15
      ActiveSheet.Cells(4001, i).Value = Odat(i)
      ActiveSheet.Cells(OtuRow, i).Value = Odat(i)
    Next i
  End If

宜しくお願いします。

【63512】Re:データベース書込み速度アップについて
発言  りん E-MAIL  - 09/11/14(土) 18:33 -

引用なし
パスワード
   たかさん さん、こんばんわ。

>3千行、50列位のデータベースをワークに作成しています。
>ユーザーフォームにより入力したデータを行ごとに書き込むのですが、
>データが多くなるにつれ、処理速度が極端におそくなりました。
>ワークシートに書き込むのに処理の早い方法はないのでしょうか。
>テキストデータに書き出す方法もあるようですが。

>      ActiveSheet.Cells(5, i).Value = Tdat(i)       
>      ActiveSheet.Cells(ToRow, i).Value = Tdat(i)
再計算を切っておくのは基本ですが、配列をつかってがばっと書き出すようにすれば、書き込み処理は速くなります。

参考
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=36495;id=excel

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