传递到表新行的字符串单元格引用数组不显示引用值

问题描述 投票:0回答:1

我有一个脚本,可以将用户可填充的数据排列到工作表中的项目槽中,同时将相同的数据在另一个工作表中表示为

每次生成一个槽时,该槽中的每个单元格都会被命名,然后这些名称通过数组的传递到函数中,然后将作为新行插入我的中。

    Dim str_line(5) As String

    str_line(0) = rng_sid.Name
    str_line(1) = rng_status.Name
    str_line(2) = rng_width.Name
    str_line(3) = rng_height.Name
    str_line(4) = rng_material.Name
    str_line(5) = rng_quantity.Name
    
    Call modData.AddTableLine(str_line)
Sub AddTableLine(str_line() As String)

    Dim table As ListObject
    Dim newRow As ListRow
    
    Set table = Range("tblData").ListObject
    Set newRow = table.ListRows.add(AlwaysInsert:=True)
    
    newRow.Range = str_line
    
End Sub

我面临的问题是,当新行插入到中时,表格无法识别这些是公式,并且仅显示值。

显示绝对单元格引用的表格

需要明确的是,我在这里要做的就是让单元格引用正常工作。当我将它们注入到我的表中时,发生了一些事情,导致它们被读取为文本而不是公式。

我尝试了一些不同的方法,例如循环遍历数组中的每个单独的值,除了由于某种原因将其列中的每个单元格变成相同的引用之外,它是有效的。

我也尝试过

Application.CalculateFullRebuild
,但似乎没有任何效果。

另一个奇怪的地方是我如何将单元格名称传递到数组中,但是当它们插入表中时,它们会作为绝对单元格引用传递。

似乎该问题与 粘贴字符串而不将其识别为公式有关。我认为我以前没有遇到过这个问题,但我对在 VBA 中使用 很陌生。

excel vba string reference listobject
1个回答
0
投票

这会起作用 - 因为你只有五个值,所以不应该是性能问题:

Sub AddTableLine(str_line() As String)

    Dim table As ListObject
    Dim newRow As ListRow
    
    Set table = Range("tblData").ListObject
    Set newRow = table.ListRows.Add(AlwaysInsert:=True)
    
    Dim i As Long
    For i = 1 To 5
        newRow.Range(1, i).Formula = str_line(i)
    Next

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.