Application.Transpose 数组在正确打印一些值后将 NA 设置为范围单元格

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

我有一个一维字符串数组,它的大小是动态的。

Application.Transpose
之后,它将 #N/A 设置为范围值。

    Dim a_ComboLovs() As String
    Dim a_metasheet As Worksheet ' consider this as worksheet object
    Dim g_ComboSourceColCount as long
    
    ' For example, setting it to some values for illustration:
    a_ComboLovs = Split("Value1,Value2,Value3,...,Value80000", ",")
    g_ComboSourceColCount = 25
    
    a_metasheet.Range(g_ComboSourceColCount & "100:" & g_ComboSourceColCount & UBound(a_ComboLovs) + 100).Value = Application.Transpose(a_ComboLovs)
    
     a_metasheet.Range(g_ComboSourceColCount & "100:" & g_ComboSourceColCount & UBound(a_ComboLovs) + 100).Name = "Evalranage"

该代码在

WorkSheet_Open
事件中调用。

在达到某些值(15k)之前,它会在每个单元格中打印 #N/A 到最后一个值。

我正在努力避免循环。

excel vba na
1个回答
1
投票

您的

Range()
参数错误

例如

g_ComboSourceColCount & "100:"
解析为“25100:”,这不是作为范围界限的有效引用

使用

Cells()
而不是
Range()
,以便您可以使用数值作为行和列索引

Dim a_metasheet As Worksheet ' consider this as worksheet object
    Set a_metasheet = ActiveSheet ' change it as per your needs


' For example, setting it to some values for illustration:
Dim a_ComboLovs() As String
    a_ComboLovs = Split("Value1,Value2,Value3,...,Value80000", ",")

Dim g_ComboSourceColCount As Long
    g_ComboSourceColCount = 25

    a_metasheet.Cells(100, g_ComboSourceColCount).Resize(UBound(a_ComboLovs)).Value = Application.Transpose(a_ComboLovs)
© www.soinside.com 2019 - 2024. All rights reserved.