人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBA に関する質問です。

Excelで帳票を作っているのですが、20拠点分を一括でやってます。

現状
?ExcelでDBへ接続
?データをそれぞれのシートに貼り付け
?BVAで拠点のコードに書き換え
?式を消すためにコピー&ペースト
???を必要な数だけ自動で繰り返します。

実行速度にまだ満足できず、質問に至りました。
???はすぐ終わるのですが、コピー&ペーストで時間がかかってるように思います。
シートの式を値に変える方法で、オススメな方法があったら教えてください。
※PCのスペックアップ以外でお願いします。

●質問者: きあ
●カテゴリ:コンピュータ
✍キーワード:?B DB Excel pc VBA
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●70ポイント

速くするコツです。

Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select

というソースの場合は いちいち セルを選択(Select)してたら遅くなります。

ま、ここらへんは 表示をやめればいいのかもしれませんが

プログラミングとしては おすすめしません。

これを 以下のようにすればいいのです。

 Range("A1:F10").Copy
 Range("A1:F10").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True

範囲は "A1:F10"と適当に指定していますが、一つずつのセルを 処理するのではなく

シート全体の範囲を指定して 一回で やったほうが 速いかと思います。

◎質問者からの返答

シート全体と必要分(1発で指定できる範囲)で試してみたいと思います。


2 ● readmaster
●70ポイント

お役に立てるかなと思い回答致します。

1の方の指摘は最もかと思いますので、プラスアルファで。


具体的なコードは書けないのですが、2つほど。

まず1つは、

「???を必要な数だけ自動で繰り返します。」

この処理は、

「必要な数」とは、例えば20拠点が全てだとして、

例えば10拠点とか3拠点とか、必要な分をどこかで判断しているかと思います。

ループ分でいえば、回数を変数指定したり、またはセルに直接入力している(20とか)かもしれません。

もし判断されていないのであれば、20拠点全部回っているので、その部分は処理を少なくできそうです。


あともう1つは、

「?式を消すためにコピー&ペースト」

式を消す部分が固定なら値も固定できそうです。

当然、変数よりも固定値のほうが処理は早くなるかと思います。

あと、消す処理もいくつかありそうです。どれが早いかを計測してみるのも面白そうです。


参考までに、

処理を早くするには、

1)処理を減らす

2)効率的な処理にする(関数やロジック)

3)一度使った変数をなるべく使う(無駄にクリアしない)

などかなと考えられます。


回答になってないかもしれませんが、以上です。

◎質問者からの返答

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

独学でやってる上に一人でちまちま進めてるんでコツといったものに行きつくまでに時間がかかっております。

今回の質問で、3分も短くなりました。

?あと、消す処理もいくつかありそうです。どれが早いかを計測してみるのも面白そうです。

これについて、何らかの具体案があればぜひお願いします。

今のところ

シートを複製して、全エリアコピー&ペーストでやってます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ