解释如何理解百分比变化的 VBA 代码

解释如何理解百分比变化的 VBA 代码

我正在从互联网上学习在 VBA 中创建公式,然后我偶然看到了 Jon 在 Excel 校园里撰写的这篇文章,他当时正在教如何创建百分比变化的公式。

然而,我无法理解代码的一部分,他在创建公式时使用了双引号和“与”符号。

sFormula = "=IFERROR((" & sNew & " - " & sOld & ")/" & sOld & ",0)"

有人能告诉我为什么在 sNew 和 sOld 之间使用 & 符号吗?还有为什么不使用引号和 & 符号会导致代码失败?

完整编码如下-

Sub Percent_Change_Formula()
'Description: Creates a percentage change formula
'Source: https://www.excelcampus.com/vba/percentage-change-formulas-macro/

Dim rOld As Range
Dim rNew As Range
Dim sOld As String
Dim sNew As String
Dim sFormula As String


'End the macro on any input errors
'or if the user hits Cancel in the InputBox
On Error GoTo ErrExit

'Prompt the user to select the cells
Set rNew = Application.InputBox( _
        "Select the cell that contains the NEW number", _
        "Select New Cell", Type:=8)
Set rOld = Application.InputBox( _
        "Select the cell that contains the OLD number", _
        "Select Old Cell", Type:=8)

'Get the cell addresses for the formula - relative references
sNew = rNew.Address(False, False)
sOld = rOld.Address(False, False)
    
'Create the formula
sFormula = "=IFERROR((" & sNew & " - " & sOld & ")/" & sOld & ",0)"

'Create the formula in the activecell
ActiveCell.Formula = sFormula

ErrExit:
    
End Sub

答案1

在 VBA 中,与号运算符 (&)是:

用于强制连接两个表达式的字符串。

该公式是动态创建/构建的,这就是为什么使用 & 符号来附加/连接不同的部分。

另外,为什么不使用引号和与号会导致代码失败?

如果不使用“&”符号,则例如写:

sFormula = "=IFERROR(("  sNew " - "  sOld  ")/"  sOld & ",0)"

由于不同字符串和字符串变量(sNew 和 sOld)之间有空格,所以编译器期望语句结束,因此您会收到错误。如果所有字符串和字符串变量都在同一行,编译器将不知道该如何处理。

相关内容