目标:对多个文件进行相同的修改。
错误:(运行时错误'13':类型不匹配)在行> Enter_Formulas wb
Option Explicit
Sub ProcessFiles()
Dim Filename, Pathname As String
Dim wb As Workbook
Pathname = "C:\Users\E\Desktop\macro2\"
Filename = Dir(Pathname)
Do While Filename <> ""
Set wb = Workbooks.Open(Pathname & Filename)
Enter_Formulas wb
wb.Close SaveChanges:=True
Filename = Dir()
Loop
End Sub
Sub Enter_Formulas(wb As Workbooks)
With wb
.Worksheets(1).Range("G19", Range("F19").End(xlDown).Offset(0, 1)).FormulaR1C1 = "=IF(R[0]C[-2]<0,R[-1]C[-5])"
.Worksheets(1).Range("H19", Range("F19").End(xlDown).Offset(0, 2)).FormulaR1C1 = "=IF(R[0]C[-3]<0,R[-1]C[-5])"
.Worksheets(1).Range("I19", Range("F19").End(xlDown).Offset(0, 3)).FormulaR1C1 = "=IF(R[0]C[-4]<0,R[-1]C[-5])"
.Worksheets(1).Range("H7").FormulaR1C1 = "=ROUND(R[10]C,0)=ROUND(RC[-6],0)"
End With
End Sub
注意:如果Enter_Formulas()
的正文是:
.Worksheets(1).Range("A1").Value = "pointless"
答案 0 :(得分:1)
更改
Sub Enter_Formulas(wb As Workbooks)
到
Sub Enter_Formulas(wb As Workbook)
(在声明的最后有一个额外的&#34; s&#34;)
答案 1 :(得分:1)
您不能依赖默认的活动工作表进行父工作表引用。
.Worksheets(1).Range("G19", Range("F19").End(xlDown).Offset(0, 1)).FormulaR1C1 = "=IF(R[0]C[-2]<0,R[-1]C[-5])"
如果Worksheets(1)是活动工作表,则范围(&#34; F19&#34;)仅属于工作表(1)。完全限定父工作表很容易。
Sub Enter_Formulas(wb As Workbooks)
With wb.Worksheets(1)
.Range(.cells(19, "G"), .cells(19, "F").End(xlDown).Offset(0, 1)).FormulaR1C1 = "=IF(R[0]C[-2]<0,R[-1]C[-5])"
.Range(.cells(19, "H"), .cells(19, "F").End(xlDown).Offset(0, 2)).FormulaR1C1 = "=IF(R[0]C[-3]<0,R[-1]C[-5])"
.Range(.cells(19, "I"), .cells(19, "F").End(xlDown).Offset(0, 3)).FormulaR1C1 = "=IF(R[0]C[-4]<0,R[-1]C[-5])"
.Range("H7").FormulaR1C1 = "=ROUND(R[10]C,0)=ROUND(RC[-6],0)"
End With
End Sub
现在注意.Range("F19")
,而不是Range("F19")
。