使用row.count / column.count设置动态范围名称时出错

时间:2017-12-06 10:55:52

标签: excel vba named-ranges

这是与以下原始问题相关的问题: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

此代码工作正常。

非常感谢任何有关争论的帮助!

谢谢, 斯蒂芬

1 个答案:

答案 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