VBA中可能的单元格引用错误

我在运行这个macros的时候遇到了一个问题 – 它以前工作过,但是现在第6行给了我一个新的计算机(也是较新版本的Excel)的错误。 这里有一个明显的问题吗?

Sub CalculateDifferences() Dim Col As Long Col = Worksheets("AgedDebtors").Range("Z2").End(xlToLeft).Column Worksheets("AgedDebtors").Range("Z2").End(xlToLeft).Value = "Difference" Worksheets("AgedDebtors").Range("H1").Value = Worksheets("PivotTable").Range("Z2").End(xlToLeft).Column - 2 Worksheets("AgedDebtors").Range(Cells(3, Col), Cells(Range("A65535").End(xlUp).Row, Col)).Formula = "=$G3 - VLOOKUP($F3,PivotTable!$A$2:$J$3500, $H$1, FALSE)" End Sub 

您没有通过工作表限定两个单元格(和一个额外的范围)调用:

 Worksheets("AgedDebtors").Range(Worksheets("AgedDebtors").Cells(3, Col), Worksheets("AgedDebtors").Cells(Worksheets("AgedDebtors").Range("A65535").End(xlUp).Row, Col)).Formula = "=$G3 - VLOOKUP($F3,PivotTable!$A$2:$J$3500, $H$1, FALSE)" 

但你可以整理一个With...End With块:

 Sub CalculateDifferences() Dim Col As Long with Worksheets("AgedDebtors") Col = .Range("Z2").End(xlToLeft).Column .Range("Z2").End(xlToLeft).Value = "Difference" .Range("H1").Value = Worksheets("PivotTable").Range("Z2").End(xlToLeft).Column - 2 .Range(.Cells(3, Col), .Cells(.Range("A65535").End(xlUp).Row, Col)).Formula = "=$G3 - VLOOKUP($F3,PivotTable!$A$2:$J$3500, $H$1, FALSE)" end with End Sub