【问题标题】:Error setting dynamic range name using row.count/column.count使用 row.count/column.count 设置动态范围名称时出错
【发布时间】:2017-12-06 10:55:51
【问题描述】:

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

这段代码运行良好。

非常感谢任何帮助解决这个问题!

谢谢, 斯蒂芬

【问题讨论】:

  • 你遇到了什么运行时错误?
  • 运行时错误 1004 - 您键入的公式包含错误。

标签: excel vba named-ranges


【解决方案1】:

当尝试设置 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

【讨论】:

  • 抱歉这么久才回复。我被拉到一个不同的项目中,有一段时间没有时间玩这个模型了!代码运行 :) 但是,不幸的是,它选择了工作表中的所有行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多