VBA在R1C1表示法中插入错误的公式会变得混乱

问题描述

我有一个函数,可以使用R1C1样式符号将数组公式插入电子表格中。当代码将公式插入电子表格时,所有引用都被弄乱了。这使我感到困惑,因为从网上看到的范围的.FormulaArray属性同时接受A1和R1C1样式。这是我要插入的公式:

AddArrayFunction "HUB_START","=IFERROR(IF(INDEX(PACE!C10,MATCH(1,(PACE!C4=""New Hub"")*(PACE!C9=HubSummaryLTE!RC1),0))="""",""NO_DATE"",INDEX(PACE!C10,0))),""NO_DATE"")",HubWS(Key) ' Make this an array formula

仅使用双引号是因为我将字符串传递给实际上将公式插入整个列的函数的方式。 当代码写入Range.FormulaArray属性,然后我进入电子表格查看该单元格时,它改为显示以下内容

=IFERROR(IF(INDEX(PACE!R[8]C[-4],(PACE!R[2]C[-4]="New Hub")*(PACE!R[7]C[-4]=HubSummaryLTE!R[-1]C[464]),0))="","NO_DATE",INDEX(PACE!R[8]C[-4],"NO_DATE")

我不知道为什么引用变得混乱,我也不想使用A1表示法,有什么想法吗?

这是呼叫代码

' HUB_START
AddArrayFunction "HUB_START",HubWS(Key) ' Make this an array formula

这是函数定义:

Sub AddArrayFunction(FormulaTitle As String,FormulaText As String,WS As Worksheet,Optional Row As Long = 1,Optional Column As Integer = -1)
    Dim LastRow As Long
        LastRow = FindLastUsedRow(WS) ' WS.Cells(WS.Rows.Count,1).End(xlUp).Row
    Dim PasteCol As Integer
    If Column < 0 Then
        PasteCol = 1
        Do Until WS.Cells(Row,PasteCol) = ""
            PasteCol = PasteCol + 1
        Loop
    Else
        PasteCol = Column
    End If
    If WS.Cells(Row,PasteCol) <> "" Then WS.Columns(PasteCol).Insert Shift:=xlShiftToRight
    WS.Cells(Row,PasteCol) = FormulaTitle
    WS.Range(WS.Cells(Row + 1,PasteCol),WS.Cells(LastRow,PasteCol)).FormulaArray = FormulaText
End Sub

标题为“ HUB_START”的列具有代码自动插入的公式。它旁边的没有标题的列具有相同的确切公式,我只是复制并粘贴了内容,然后我控制了shift输入测试,它显然有效,所以我不知道问题出在哪里。

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)