Excel VBA質問箱 IV

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

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


27278 / 76738 ←次へ | 前へ→

【54783】Re:Workbooksの引数でフルパス指定が原因?
発言  n  - 08/3/29(土) 19:27 -

引用なし
パスワード
   補足ですが、ActivateやSelectに頼ると状況によっては不具合の元ですし、
実行速度にも影響してきます。
Objectの親からきちんと指定してあげれば、ほとんどのケースでは不要です。
://www.officetanaka.net/excel/vba/speed/s2.htm

例えば
Dim wb     As Workbook
Dim ws1     As Worksheet
Dim ws2     As Worksheet
Dim mxRow    As Long
Dim i      As Long

Set ws1 = Workbooks("PickCells.xls").Worksheets(1)
Set ws2 = Workbooks("PickCells.xls").Worksheets(2)
...とし、

cellPlace = ws1.Range(cellPlaceCol + CStr(counter_cell)).Value
cellSheet = ws1.Range(cellSheetPlaceCol + CStr(counter_cell)).Value
targetValue = wb.Worksheets(cellSheet).Range(cellPlace).Value

ws2.Cells(1, counter_cell - sv_counter_cell + 1).Value = cellPlace + "(" + CStr(cellSheet) + ")"

ws2.Cells(counter_file - sv_counter_file + 2, counter_cell - sv_counter_cell + 1).Value = targetValue

...とすればActivateは必要ないです。

またLoop処理についてはFor...Nextステートメントについて調べてみてください。

'B8セルから下へ連続データを調べ、終わりの行を取得
mxRow = ws1.Cells(counter_file, filePathCol).End(xlDown).Row
'B9セル以降データがないとシートの最終行を取得してしまうので念の為チェック
If ws1.Cells(mxRow, filePathCol).Value = "" Then mxRow = counter_file
For i = counter_file To maxrow
'カウンタとして i を利用

Next

...などとする事ができます。
さらに For Each...Next ステートメントを使うとObjectや配列のLoopの際に効率的です。
VBEのヘルプは状況依存型で、コード内の調査語句にマウスキャレットをあてて[F1]キーを押せば
目的のトピックにクイックアクセスできますので、色々調べてみてください。


>VBA でもメモリーリークみたいのがあるんですか
あるみたいですね。でも Set wb = Nothing をすれば大丈夫、というものでもないようですよ。
Set wb = Nothing
は言ってみれば『Object変数の初期化』ですね。
本来、プロシージャ終了時にリセットされるので必要ないという考えもあるようです。
ですがこのObject変数の使い方によっては、なんか残ったりするようですね。
プロではないので詳しくはわかりませんが。

補足は以上です。
でわ。がんばってください。

0 hits

【54777】Workbooksの引数でフルパス指定が原因? jax_6 08/3/29(土) 16:29 質問
【54778】Re:Workbooksの引数でフルパス指定が原因? jax_6 08/3/29(土) 16:43 発言
【54780】Re:Workbooksの引数でフルパス指定が原因? jax_6 08/3/29(土) 17:38 質問
【54781】Re:Workbooksの引数でフルパス指定が原因? n 08/3/29(土) 17:57 発言
【54782】Re:Workbooksの引数でフルパス指定が原因? jax_6 08/3/29(土) 18:32 お礼
【54783】Re:Workbooksの引数でフルパス指定が原因? n 08/3/29(土) 19:27 発言
【54792】Re:Workbooksの引数でフルパス指定が原因? jax_6 08/3/30(日) 12:12 お礼
【54793】Re:Workbooksの引数でフルパス指定が原因? jax_6 08/3/30(日) 12:24 発言

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