excel 2010 vba 宏 ActiveCell.Formula = 运行时产生一个空单元格

excel 2010 vba 宏 ActiveCell.Formula = 运行时产生一个空单元格

此宏公式(在循环中为每个新插入的工作表放置一个 Vlookup 公式)在运行时会导致出现一个空单元格:

   ActiveCell.Formula = "=VLookup(""Total Other Operating Expenses"", ActiveWorkbook.Sheets(sheetname).Columns(""H:R""), 7, True)"

单元格完全空白。我花了几个周末搜索博客,没有一个提到这个结果。

我使用了一种变通方法,即使用完全相同的公式“打印”(如下)(根据一些博客添加了一些引号),它可以在文本文件中正确创建公式。然后,我将 case 语句粘贴到另一个宏中,当它被调用用于特定工作表时,它会在单元格中生成正确的公式。以下是在文本文件中创建 case 语句的打印语句:

    ffile = FreeFile()
    Open MyFile For Output As ffile
    Print #ffile, "Sub SelectTabsFormulas()"
    'create Option1 Vlookups
    Print #ffile, "    Select Case sheetname"
    For FNum = LBound(MyOthExpFiles) To UBound(MyOthExpFiles)
        sheetname = Trim(Mid(MyOthExpFiles(FNum), 6, 4))
        Print #ffile, "    Case " & sheetname & ""
        Print #ffile, "        ActiveCell.Formula = ""=VLookup(""""Total Other Operating Expenses"""", '" & sheetname & "'!H:R, 7, True)"""
        FCnt = FCnt + 1
    Next FNum
    Print #ffile, "    Case Else"
    Print #ffile, "        ActiveCell.Value = """
    Print #ffile, "    End Select"
    Print #ffile, "    "
    Print #ffile, "    Return"
    Print #ffile, "End Sub"
    Close #ffile

将结果的 case 语句复制到宏中,它会在单元格中生成正确的公式:

Sub SelectTabsFormulas()
  Select Case sheetname
    Case 112
      ActiveCell.Formula = "=VLookup(""Total Other Operating Expenses"", '112'!H:R, 7, True)"
    Case 114
      ActiveCell.Formula = "=VLookup(""Total Other Operating Expenses"", '114'!H:R, 7, True)"
    Case 9112
      ActiveCell.Formula = "=VLookup(""Total Other Operating Expenses"", '9112'!H:R, 7, True)"
    Case Else
      ActiveCell.Value = ""
  End Select

  Return
End Sub

当然,我的问题是为什么我得到的结果为空白?是否有 Windows 7 或 Excel 信任中心设置阻止公式插入?

答案1

将其更改为:

ActiveCell.Formula = "=VLookup(""Total Other Operating Expenses"", " & _
                     sheetname & "!H:R, 7, True)"

您当前的公式没有计算 ActiveWorkbook.Sheets(sheetname).Columns(""H:R""),因为它在字符串内,所以它会尝试将其放入公式中,但是无法从公式访问 VBA 对象模型。

相关内容