1

Excel ワークブックでパフォーマンスの問題が発生しました。私は2つの異なるワークシートを持っています:

  • 最初のシートには多くの情報があります
  • 2 番目のシートは、役に立つものだけを示しています (毎日使用していない人にとって)。

その 2 番目のシートで、並べ替え関数で行がマークされているかどうかを確認する必要があります。現時点では、VBA で次のように実行しています。

ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=1
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=2
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=3
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=4
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=5
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=6
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=7
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=8
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=9
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=10
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=11
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=12
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=13
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=14
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=15
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=16
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=17
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=18

それは私が実行しているタスクに比べて時間がかかりすぎます。私は VBA に非常に慣れていないので、より効率的な方法があるかどうかを知りたいです。

4

1 に答える 1

2

オートフィルターを削除するだけの場合は、次を使用できます。

ActiveSheet.AutoFilterMode = False

関数の実行後にフィルターを削除して元に戻す場合は、さらに複雑になります。

VBA からシートを操作するときは、これを使用してコードをより高速に実行してください。

Application.ScreenUpdating = False
'do your stuff, like turn autofilter off
'and when you are done:
Application.ScreenUpdating = True
于 2012-05-09T09:54:30.367 に答える