我有一个例程,可以为估算和实际工作表添加新的客户范围以及验证,公式和保护。我将命名范围添加到某些单元格中,因为它们在公式中的整个工作表中使用。
命名范围的代码部分如下(它可以工作,范围在名称管理器中正确命名)
执行名称范围的函数声明为
Function InitializeAddedRange(rangeToFormat As Range, _
custName As String, currentSheet As Worksheet)
并按以下方式调用
Call InitializeAddedRange(startCell, customerName, sourceWorksheet)
所以在下面的片段中,rangeToFormat是startCell
Set rangeToFormat = rangeToFormat.Offset(0, 1)
If currentSheet.Name = "Actual Quarterly Sales" Then
rangeToFormat.Name = Replace(custName, " ", "") & "ActualBasePrice"
rangeToFormat.Offset(0, 1).Name = Replace(custName, " ", "") & "ActualIsCurrent"
ElseIf currentSheet.Name = "Quarterly Sales Projections" Then
rangeToFormat.Name = Replace(custName, " ", "") & "BasePrice"
rangeToFormat.Offset(0, 1).Name = Replace(custName, " ", "") & "IsCurrent"
End If
在同一子程序中调用的函数中,但在上面的代码之后, 我试图在众多公式中检索范围的名称。 (startCell.Name)
Set tempRange = Range(startCell.Offset(1, 3), startCell.Offset(1, 14))
For Each cCell In tempRange
With cCell
.Value = 0
.NumberFormat = "$#,##0"
.FormulaR1C1 = "=DrumGallons*" & startCell.Name & "*R[-1]C"
.Locked = True
End With
Next cCell
问题是startCell.Name
返回工作表名称和单元格地址,即 SalesEstimates $ B $ 12 ,而不是应该 customernameBasePrice 的命名范围。我做了很多VBA工作,我记不起遇到过这个问题。是否发生这种情况是因为子程序还没有完成,并且在函数尝试访问它之前,命名范围实际上还没有在excel中发生变化?我不认为可以这样,但我尝试过很多无效的事情。
答案 0 :(得分:0)
无法对其进行测试,所以我只想回忆一下。尝试使用
Name(startCell)
获取附加到范围参考
的名称答案 1 :(得分:0)
我认为您需要解决名称对象
rng.Name.Name