如何解决Microsoft的强制隐式交叉运算符是否在Excel VBA中取消了我的公式?
我正在使用一个公式根据“ C”列中的值缩进“ D”列中的文本,并且已经在VBA中使用它来格式化工作表。看起来像这样:= setindent(D2,C2)。直到最近,它仍然运作良好,但现在却没有。似乎Microsoft已开始将“隐式交集运算符”强制放入公式中(添加@:= @ setindent(D2,C2)。似乎已经将我的公式中的返回“ #Value!”过滤掉了。如果我打开其中一个具有公式的单元格处于编辑模式,然后单击“ Enter”,它将变为一个数字,并且该公式适用于目标单元格文本。如何在VBA中解决此问题?
这是公式:
Function SetIndent(z As Range,ByVal Level As Long) As Variant
Dim celldent As Range
SetIndent = IIf(Level < 0,"Min is 0!",IIf(Level > 10,"Max is 10!",Level))
If Level < 0 Then Level = 0 Else If Level > 10 Then Level = 10
For Each celldent In z
With celldent
If Level - .IndentLevel Then .InsertIndent Level - .IndentLevel
End With
Next celldent
End Function
。 。 。这是VBA复制公式的地方
'Format the Name (Column D) to indent per the Outline Level value in Column C
'See Module 16 for the Function: SetIndent
Range("AB2").Select
ActiveCell.Formula = "=SetIndent(D2,C2)"
Range("AB2").Copy Range("$AB$3:AB" & lastRow)
' Range("$AB2:AB" & lastRow).Clear
谢谢
蒂姆
解决方法
尝试使用.Formula2
而不是.Formula
Range("AB2:AB" & lastRow).Formula2 = "=SetIndent(D2,C2)"
因此,您也可以避免不必要的选择/激活。
此外,我建议您完全限定范围参考,例如通过Sheet1.Range("AB2:AB" & lastRow).Formula2
使用工作表的代码(名称)或ThisWorkbook.Worksheets("Sheet1")...
使用Excel工作表的名称字符串识别符:-)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。