"masterrow"の書式と式をループ内の範囲にコピー&ペーストしようとしています。ループはまた、別のワークブックからデータをフェッチします。したがって、ループ中のActiveWorkbookです。ループ内の式と書式をコピー/ペーストしようとするとVBAエラーが発生する
私はこの "ActiveWorkbook"の問題は問題の原因だと思っていますが、私は解決策のための助けが必要です。私は以下のループ関数を提供しています。あなたが私を助けることを願っています。
Sub Worksheet_UpdateAllItemCostData()
Dim material As Variant
Dim fndEntry As Range
Dim wb1 As Workbook, wb2 As Workbook
Dim lr As Long, I As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wb1 = ActiveWorkbook
lr = wb1.Sheets("Sagsnr.").Cells(Rows.Count, "C").End(xlUp).Row
If lr < 21 Then
Exit Sub
End If
Workbooks.Open Filename:="G:\Backoffice\Tilbudsteam\Kostdatabase\Matcost.xls", ReadOnly:=True
Set wb2 = ActiveWorkbook
For I = 21 To lr
wb1.Sheets("Sagsnr.").Rows("1:1").Select
selection.Copy
wb1.Sheets("Sagsnr.").Rows(I).Select
selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=True, Transpose:=False
selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
selection.EntireRow.Hidden = False
material = wb1.Sheets("Sagsnr.").Range("C" & I).Value
Set fndEntry = wb2.Sheets("Matcost").Range("D:D").Find(What:=material)
If Not fndEntry Is Nothing Then
wb1.Sheets("Sagsnr.").Range("B" & I).Value = wb2.Sheets("Matcost").Range("H" & fndEntry.Row).Value 'Product group
wb1.Sheets("Sagsnr.").Range("E" & I).Value = wb2.Sheets("Matcost").Range("Q" & fndEntry.Row).Value 'Available Stock
End If
Set fndEntry = wb2.Sheets("Matcost").Range("C:C").Find(What:=material)
If Not fndEntry Is Nothing Then
wb1.Sheets("Sagsnr.").Range("B" & I).Value = wb2.Sheets("Matcost").Range("H" & fndEntry.Row).Value 'Product group
wb1.Sheets("Sagsnr.").Range("E" & I).Value = wb2.Sheets("Matcost").Range("Q" & fndEntry.Row).Value 'Available Stock
End If
Next I
wb2.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
で
.Select
を回避しようとしてください。 [ハウツーについてはここを見てください](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) –正確にどこにエラーが発生するのですか? – Clusks
ありがとうございました、あなたの参考トピックVincent Gを見ていきますが、あなたも解決策を見てもらえれば分かります。私はまだ学習段階にあります。 @Clusks - 私はwb2をアクティブにするループ全体をスキップするとうまくいきますので、これはActiveWorkbookの問題だと私に結論づけていますが、私はそれを回避できません。 – Smeltet