HPM*_*HPM 7 excel vba excel-vba excel-formula
当我将数据添加到我的工作簿时,将公式从较早的单元格复制到新单元格是必要的.
我使用以下公式计算我的增长率:
=WENN(ODER(K9="";L9="");"";WENNFEHLER((L9-K9)/K9;""))
Run Code Online (Sandbox Code Playgroud)
由于这非常耗时,我想用宏来改进它,并因此编写了以下代码:
Sub Growth()
Tabelle3.Range("O9").Formula = "=WENN(ODER(K9="";L9="");"";WENNFEHLER((L9-K9)/K9;""))"
Tabelle3.Range("O9:O14").FillDown
End Sub
Run Code Online (Sandbox Code Playgroud)
但是,当我想运行代码"运行时错误'1004':应用程序定义或对象定义错误"时,此行会出现:
Tabelle3.Range("O9").Formula = "=WENN(ODER(K9="";L9="");"";WENNFEHLER((L9-K9)/K9;""))"
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会出现这个错误以及如何解决它?
Vit*_*ata 13
代码中有两个主要错误 - 不是转义"字符.Formula而是使用而不是代码.FormulaLocal.该"字符应该写两次的字符串显示一次.看到这段代码:
Public Sub TestMe()
Debug.Print "test"""""
End Sub
Run Code Online (Sandbox Code Playgroud)
它打印test"".最后一个"是字符串的结尾.关于公式,.FormulaLocal如果您想使用德语公式并加倍双引号,请使用:
Range("O9").FormulaLocal = "=WENN(ODER(K9="""";L9="""");"""";WENNFEHLER((L9-K9)/K9;""""))"
Run Code Online (Sandbox Code Playgroud)
一般情况下,避免使用.FormulaLocal和使用.Formula,以使您的VBA代码与来自意大利或法国的工作簿兼容.这样的东西适用于Excel中的任何本地设置:
Range("O9").Formula = "=IF(OR(K9="""",L9=""""),"""",IFERROR(((K9-K9)/K9),""""))"
我通常做的是以下内容:
Public Sub PrintMeUsefulFormula()
Dim strFormula As String
Dim strParenth As String
strParenth = """"
strFormula = Selection.Formula
strFormula = Replace(strFormula, """", """""")
strFormula = strParenth & strFormula & strParenth
Debug.Print strFormula
End Sub
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,您可以替换Selection.Formula为以下三个中的一个(作为示例考虑=IF(B1=C1,""Equal"",""Not Equal"")
Selection.FormulaLocal(获得=WENN()德国的当地配方)=WENN(B1=C1;""Equal"";""Not equal"")Selection.FormulaR1C1 (获得R1C1格式的公式)=IF(RC[1]=RC[2],""Equal"",""Not equal"")Selection.FormulaR1C1Local (使用本地公式获取R1C1格式)
=WENN(ZS(1)=ZS(2);"Equal";"Not equal")| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |