Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 命名表标题时出现类型不匹配错误_Excel_Vba - Fatal编程技术网

Excel 命名表标题时出现类型不匹配错误

Excel 命名表标题时出现类型不匹配错误,excel,vba,Excel,Vba,我试图将ListColumns添加到我在代码中创建的表中。我使用数组从另一个文件中的另一个工作表中提取单元格区域,以生成表的模板。当我查看“局部变量”窗口时,数组正在正确地提取数据,只是没有重命名标题。我在注释行中得到一个错误: Dim i As Long Dim hdrs, hdrs2 hdrs = Array(srcSheet.Range("A1:K1").Value2) hdrs2 = Array(srcSheet2.Range("A1:I1").

我试图将ListColumns添加到我在代码中创建的表中。我使用数组从另一个文件中的另一个工作表中提取单元格区域,以生成表的模板。当我查看“局部变量”窗口时,数组正在正确地提取数据,只是没有重命名标题。我在注释行中得到一个错误:

Dim i As Long
Dim hdrs, hdrs2

hdrs = Array(srcSheet.Range("A1:K1").Value2)
hdrs2 = Array(srcSheet2.Range("A1:I1").Value2)

xlSheet2.ListObjects.Add.Name = "tblData"
xlSheet3.ListObjects.Add.Name = "tblCodes"
Set tbl = xlSheet2.ListObjects("tblData")
Set tbl2 = xlSheet3.ListObjects("tblCodes")

With tbl
    For i = 0 To UBound(hdrs)
        .ListColumns.Add
        .ListColumns(.ListColumns.Count).Name = hdrs(i) '< Type Mismatch error
    Next i
End With
Dim i尽可能长
尺寸hdrs,hdrs2
hdrs=阵列(srcSheet.Range(“A1:K1”).值2)
hdrs2=阵列(srcSheet2.范围(“A1:I1”).值2)
xlSheet2.ListObjects.Add.Name=“tblData”
xlSheet3.ListObjects.Add.Name=“tblCodes”
设置tbl=xlSheet2.ListObjects(“tblData”)
设置tbl2=xlSheet3.ListObjects(“tblCodes”)
带tbl
对于i=0至UBound(hdrs)
.ListColumns.Add
.ListColumns(.ListColumns.Count).Name=hdrs(i)<类型不匹配错误
接下来我
以
srcSheet是当前(ThisWorkbook)工作表,xlSheets是其他文件中的工作表。第一列是日期字段。 我只包含了一个数组集,因为我确信另一个数组集也会有同样的问题。
谢谢

您将填充数组,如下所示:

hdrs = Application.Transpose(Application.Transpose(srcSheet.Range("A1:K1"))) 'Import range to array

示例代码:

要创建1D阵列,请执行以下操作:

Sub Alt1 ()
Dim hdrs, hdrs2
Dim sh As Worksheet

Set srcSheet = Sheet1

hdrs = Application.Transpose(Application.Transpose(srcSheet.Range("A1:K1"))) 'Import range to array

For i = LBound(hdrs) To UBound(hdrs)
Debug.Print hdrs(i)
    Cells(i + 1, "A").Value = hdrs(i) '< Type Mismatch error
Next i

End Sub
Sub Alt1()
尺寸hdrs,hdrs2
将sh设置为工作表
设置srcSheet=Sheet1
hdrs=Application.Transpose(Application.Transpose(srcSheet.Range(“A1:K1”)))将范围导入数组
对于i=LBound(hdrs)至UBound(hdrs)
调试.打印HDR(i)
单元(i+1,“A”)。值=hdrs(i)<类型不匹配错误
接下来我
端接头
要为阵列创建更多维度(本例中为2D),请执行以下操作:

Sub Alt2()

Dim hdrs, hdrs2
Dim sh As Worksheet

Set srcSheet = Sheet1

hdrs = srcSheet.Range("A1:K1").Value 'Import range to array

For i = LBound(hdrs, 2) To UBound(hdrs, 2) 'Notice that we need to change the upper bound definition
    Cells(i + 1, "A").Value = hdrs(1, i) '< Type Mismatch error
Next i

End Sub
Sub Alt2()
尺寸hdrs,hdrs2
将sh设置为工作表
设置srcSheet=Sheet1
hdrs=srcSheet.Range(“A1:K1”).Value“将范围导入数组”
对于i=LBound(hdrs,2)到UBound(hdrs,2)”,请注意,我们需要更改上限定义
单元(i+1,“A”)。值=hdrs(1,i)<类型不匹配错误
接下来我
端接头

了解如何使用范围内的阵列。提示:您不能使用
数组
。我如何更正@BigBen?