アプリ版:「スタンプのみでお礼する」機能のリリースについて

ブックAのシートA´のA2:AZ80にあるデータをコピーし別のパスにあるブックBのシートB´のアクティブなセルに貼り付けをしたいのですが、速度が遅いです。(というよりずっと実行中になってしまいます。)

A2:AZ80には空白の行もあるため貼り付け後に空白の行は削除するようにします。

さらに次回貼り付けする際にはその最終行から貼り付けるようにしたいので、(誰かがデータをいじってアクティブセルが任意のところに移動したまま保存された場合も考慮したいので)
現在は貼り付ける前にB2をアクティブにし、その最終行に飛ばし、その下をアクティブにするように
しています。

上記の条件で速度をできるだけ早くしてあげるにはコードをどのように書いたらいいのでしょうか?
宜しくお願いいたします。

A 回答 (4件)

遅いというより止まってると思います。

終了したことはあるのですか?普通なら数秒です。

F8デバッグモードで一行ずつ実行出来ます。どこで止まってるか分かります。
    • good
    • 3

show me ur code,please!!

    • good
    • 3

個人的には、あまりCopyとPasteは使わないですね。



単純にCells(x,y)でブックAの値を参照して、それをブックBのセルにCells(x,y).Valueで入れるようにします。
あとはこれをループ処理するだけ。

クリップボードを介すると重くなることがありますし。

ループ処理になるので多少時間はかかりますが、上記のようなループ処理の方がメモリをあまり占有しないので動作的には軽いかと思います。

ご参考まで。
    • good
    • 2

コードの提示がないので何とも言えませんが・・・・。



貼付先のセル指定は対して時間がかからないので、
とりあえず以下のようにしてください。

'作画・自動計算OFF
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

・セル貼付 処理
・行の削除 処理

'自動計算・作画ON
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True



あとは

・無駄な処理を省く・作業の効率化
・selectを使用しないようにする
・RangeよりCellsを使用する
・内部処理は書き出さずに変数内で処理する
・変数の型は宣言する
・debug.printを無くす

ま、いろいろあると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A