AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1688185
Accepted
Smaran
Smaran
Asked: 2021-11-19 02:35:01 +0800 CST2021-11-19 02:35:01 +0800 CST 2021-11-19 02:35:01 +0800 CST

解释了解百分比变化的 VBA 代码

  • 772

我正在从互联网上学习在 VBA 中创建公式,我在 excel 校园里看到了 Jon 的这篇文章,他在那里教他为百分比变化创建公式。

但是,我无法理解代码的一部分,他在创建公式时使用了双引号和 & 符号。

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
microsoft-excel microsoft-excel-2010
  • 1 1 个回答
  • 52 Views

1 个回答

  • Voted
  1. Best Answer
    Reddy Lutonadio
    2021-11-19T02:43:30+08:002021-11-19T02:43:30+08:00

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

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

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

    还有为什么不使用反逗号和 & 符号会导致代码失败?

    如果您不使用&符号并编写例如:

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

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

    • 2

相关问题

  • 如何对整列使用 Excel 的 LENGTH 函数?

  • Excel 数组(2 个变量)

  • 如何从 WSL 打开 office 文件

  • VBA根据文件名重命名工作表

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve