首页 > 解决方案 > 公式中的变量工作簿名称

问题描述

我正在尝试编写一个代码,该代码采用变量工作簿名称(前面已声明)并将其输入到将被粘贴到单元格中的公式中。

如果我只是将工作簿写入其中,我已经达到了公式工作的程度,并且我有工作簿路径的变量声明工作正常,我只是无法弄清楚将变量放入公式代码的格式。

'''Spreadsheet opening and variable declaration

strFileToOpen = Application.GetOpenFilename _
(Title:="Select an updated Inventory Report", _
FileFilter:="Excel Files *.xls* (*.xls*),")

If strFileToOpen = False Then

    'Displaying a message if file not choosedn in the above step
    MsgBox "No file selected.", vbExclamation, "Sorry!"

    'And existing from the procedure
    Exit Sub
Else

End If

Workbooks.Open Filename:=strFileToOpen



Set InvRpt = ActiveWorkbook

InvRptName = ActiveWorkbook.FullName

Set InvSht = InvRpt.Worksheets("ALL")

'''Formula insert

ActiveCell.Formula = "=IF(ISERROR(GETPIVOTDATA(""Sec QTY Sum"", 'InvRptName'!$A$4,""Alias"",""" & y & """)),0,GETPIVOTDATA(""Sec QTY Sum"", 'InvRptName'!$A$4,""Alias"",""" & y & """))"

最终结果将是此代码完全像这样工作,但使用变量而不是工作簿/工作表名称:

 ActiveCell.Formula = "=IF(ISERROR(GETPIVOTDATA(""Sec QTY Sum"", '[8-14-19 AM INVENTORY.xls]Sheet2'!$A$4,""Alias"",""" & y & """)),0,GETPIVOTDATA(""Sec QTY Sum"", '[8-14-19 AM INVENTORY.xls]Sheet2'!$A$4,""Alias"",""" & y & """))"

标签: excelvba

解决方案


在遇到问题的行中放置一个断点总是有帮助的,然后使用中间窗口找出问题所在。例如;

  1. 在您有 ActiveCell.Formula = 的最后一行放置一个断点
  2. 运行代码
  3. 在中间窗口类型中?"=IF(ISERROR(GETPIVOTDATA(""Sec QTY Sum"", 'InvRptName'!$A$4,""Alias"",""" & y & """)),0,GETPIVOTDATA(""Sec QTY Sum"", 'InvRptName'!$A$4,""Alias"",""" & y & """))"
  4. 笔记; 这 ?指示要查看返回值的中间窗口。
  5. 如果编译正常,您应该会看到一个结果字符串,看看它是否符合您的预期。我猜你的结果将包括文本'InvRptName'你期望'[8-14-19 AM INVENTORY.xls]Sheet2'

要获得'[8-14-19 AM INVENTORY.xls]Sheet2'!$A$4尝试使用;

?"'[" & ActiveWorkbook.Name & "]" & ActiveSheet.Name & "'!$A$4"

另一个热门提示;

  1. 在您的代码中使用Debug.Print "add your messages here or a variable " & InvRptName以输出调试消息。
  2. 在执行通知期间使用中间寡妇修复变量InvRptName = "'[" & ActiveWorkbook.Name & "]" & ActiveSheet.Name & "'!$A$4"我排除了?这次。

推荐阅读