2

以下のコードの何が問題になっていますか? vlookup別のワークブックの閉じたデータを使用しようとしています。このコードを実行すると、実行に時間がかかります。最後にハングします...しかし、最終的には正しい結果が得られます:

Sub testing()
  Range("G1").EntireColumn.Insert
  With Range("G2")
    .Formula = "=VLOOKUP(F2,'C:\Users\sathisk\Desktop\Macros\ReferencePath\[HUL_Assets_18th April 2012.xls]HUL_Assets_18th April 2012.xls'!A$1:J$65536,10,0)"
    .Copy
    .Offset(0, -1).Select
  End With

  Selection.End(xlDown).Offset(0, 1).Select

  With ActiveCell
    .PasteSpecial xlPasteFormulas
    .Copy
    .Select
  End With

  Range(ActiveCell, Selection.End(xlUp)).PasteSpecial xlPasteFormulas

End Sub
4

2 に答える 2

2

これはあなたがやろうとしていることですか?

Option Explicit

Sub testing()
    Dim LastRow As Long

    Application.Calculation = xlCalculationManual

    Range("G1").EntireColumn.Insert

    LastRow = Range("F" & Rows.Count).End(xlUp).Row

    With Range("G2:G" & LastRow)
        .Formula = "=VLOOKUP(F2,'C:\Users\sathisk\Desktop\Macros\ReferencePath\[HUL_Assets_18th April 2012.xls]HUL_Assets_18th April 2012.xls'!A$1:J$65536,10,0)"
    End With

    Application.Calculation = xlCalculationAutomatic
End Sub

編集

J$65536また、そのシートの実際の最後の行に変更することをお勧めします。たとえば、そのシートのデータが行 1000 までの場合は、次のように変更します。J$1000

于 2012-04-19T10:29:49.407 に答える
1

シッダールスの推奨事項に加えて、私も追加します

Application.ScreenUpdating = False 'プロセスを高速化するために画面の更新をオフにします。Application.Calculation = xlCalculationManual とともにマクロの上部に

Application.ScreenUpdating = True '画面の更新をオンにします。Application.Calculation = xlCalculationAutomatic とともに下部に

私は両方の方法を使用して、マクロを実行するだけで CPU を解放し、マクロが終了するまで画面の更新や計算を行わないようにしています。

于 2012-05-18T21:12:39.903 に答える