エクセル2010、VBAや関数について
Private Sub CommandButton1_Click()
Worksheets("商品マスタ").Activate
Application.Calculation = xlCalculationManual
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
ActiveWindow.ScrollRow = 3
Range("AI1:AQ4").ClearContents
Range("AI1:AQ4").NumberFormatLocal = "@"
Range("AJ2:AK2").Value = Range("B2:C2").Value
Range("AL2:AM2").Value = Range("D2").Value
Range("AO2").Value = Range("E2").Value
Range("AP2").Value = Range("V2").Value
Range("AQ2").Value = Range("W2").Value
Range("AN2").Value = Range("D2").Value
If Me.TextBox1.Value <> "" Then ' コード
Range("AK3").Value = "*" & Me.TextBox1.Value
End If
If Me.TextBox2.Value <> "" Then ' メーカー
Range("AL3").Value = "*" & Me.TextBox2.Value & "*"
End If
If Me.TextBox3.Value <> "" Then ' <--シリーズ
Range("AM3").Value = "*" & Me.TextBox3.Value & "*"
End If
If Me.TextBox4.Value <> "" Then ' <--サイズ
Range("AN3").Value = "*" & Me.TextBox4.Value & "*"
End If
If Me.TextBox5.Value <> "" Then ' 入荷日
Range("AJ3").Value = Me.TextBox5.Value
End If
If Me.TextBox9.Value <> "" Then ' 仕入れ先
Range("AP3").Value = Me.TextBox9.Value
End If
If Me.TextBox12.Value <> "" Then ' 単体価格
Range("AQ3").Value = Me.TextBox12.Value
End If
If Me.TextBox6.Value <> "" Then ' 在庫数
Range("AO3").Value = Me.TextBox6.Value
End If
If Cells(3, Columns.Count).End(xlToLeft).Column > 34 Then
Range("A2:W" & Rows.Count).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("AI2").CurrentRegion, Unique:=False
End If
Range("AI1:AQ4").ClearContents
ActiveWindow.ScrollColumn = 4
Range("A2").Activate
Application.Calculation = xlCalculationAutomatic
End Sub
このようなマクロを組んでいるのですが、とても反応が遅いのですが、
シートにはA4-AG2000にデータが入っていて、
G4-U2000には
=SUMIFS('[在庫.xlsx]02'!$AD:$AD,'[在庫.xlsx]02'!$AQ:$AQ,$A421,'[在庫.xlsx]02'!$AS:$AS,$F$2,'[在庫.xlsx]02'!$AT:$AT,G$2)
このような関数が入っております。
これが原因で、動作が遅くなっているのでしょうか?
行の挿入等もとても遅いのですが、
G-U列の関数をやめてVBAで転記してから、検索をかけたら、早くなるのでしょうか?
G-U列には関数での表記しかわからなかったため、関数をいれております。
解決法があれば教えてください。
お礼
返答いただきありがとうございます。 VBAが思ったよりも簡単でしたのでそちらでできました。 わざわざ返答してくださったのに申し訳ありません。