这是与以下原始问题相关的问题:Cannot vlookup range after name change in VBA
我的代码现在已成功命名我的范围,但有一种情况除外:
'Set range for Variance calculation
StartCell = "$B$5"
FinalColumn = wb.Sheets("Pivot Data 3 - To Use").Cells(5, Columns.Count).End(xlToLeft).Column - 1
FinalRow = wb.Sheets("Pivot Data 3 - To Use").Cells(Rows.Count, "B").End(xlDown).Column
With wb.Names("Variance")
.RefersTo = "='Pivot Data 3 - To Use'!" & StartCell & ":" & FinalRow & FinalColumn
.Visible = True
End With
所有VBA告诉我的是运行时错误。当我单步执行时,代码将自行解析为:
.RefersTo="='Pivot Data 3 - To Use'!$B$5:$Z$47"
但不会将其应用于指定范围。代码在形式上与所有已完成的分配完全相同(我复制并粘贴),所以我很难理解代码落在这里的原因,例如。
'Set range name for Key analysis
With wb.Names("KeyData")
.RefersTo = "='Pivot Data 3 - To Use'!$A$5" & ":$CM$" & LearnerNumbers + 5
.Visible = True
End With
此代码工作正常。
非常感谢任何有关争论的帮助!
谢谢, 斯蒂芬
答案 0 :(得分:0)
当尝试设置RefersTo时,看起来结束范围实际上不是范围而是整数值。似乎FinalRow总是指B列的底部单元格。这是意图吗?
不知道你的工作表是如何设置的我不能确定你应该如何改变它,但根据你的代码spinet,我会通过做类似的事情来修改:
Dim sht As Worksheet
Dim rngEnd As Range
StartCell = "$B$5"
Set sht = wb.Sheets("Pivot Data 3 - To Use")
Set rngEnd = sht.Range(sht.Cells(5, Columns.Count).End(xlToLeft).Offset(0, -1), sht.Cells(Rows.Count, "B").End(xlDown))
With wb.Names("Variance")
.RefersTo = "='" & sht.Name & "'!" & StartCell & ":" & rngEnd.Address
.Visible = True
End With