在引用不同工作簿中的单元格时,合并单元格的功能不起作用

时间:2017-10-23 09:58:52

标签: excel vba excel-vba

我有一个函数(来自一个不再可用的同事......),它接受合并的单元格,并且基本上将它们的值写入不同工作表的每个未合并单元格中:

Function MergedValue(rRange As Range)
    If rRange.MergeCells Then
        MergedValue = rRange.MergeArea(1).Value
    Else
        'MergedValue = rRange.Value
         MergedValue = rRange(1, 1).Value
    End If
End Function

当两个工作表(包含合并单元格的工作表和具有未合并单元格的工作表)位于同一工作簿中时,该函数可以正常工作。

然而,由于评估表(包含未合并的单元格)已经变得非常大并且正在减慢工作簿,我一直在尝试将其移动到单独的工作簿中。

我将评估表(包含未合并的单元格)移动到新工作簿,并复制该函数,以便在新工作簿中知道它。 我只需将模块拖到vba编辑器中的新工作簿即可。 并将“Thisworkbook”中的以下行复制到新的:

Private Sub Workbook_Open()
    Application.MacroOptions Macro:="MergedValue", Description:="Returns the value of the reference cell in a merged area.", Category:="some category", StatusBar:="some status"
End Sub

所有这些说完了功能完成它的工作直到我关闭新工作簿并重新打开它...然后我只是在使用该功能的所有单元格中出现“#Value”错误。这绝对是函数的问题,因为引用普通单元格而不经过函数工作没有问题。

我怀疑它可能与Excel只有在保存和关闭后才将整个路径写入单元格,但我似乎无法找到任何解决此问题的方法!

以下是保存和重新打开后单元格中公式的示例:

MergedValue('C:\Users\<myuser>\Desktop\[<name-of-spreadsheet>.xlsm]DYNO_SYS'!N35)

在保存和重新打开路径之前,尚未包含该路径并且公式正在运行:

MergedValue([<name-of-spreadsheet>.xlsm]DYNO_SYS!N35)

知道如何让它在新工作簿上运行吗? 非常感谢提前!

0 个答案:

没有答案