首页 > 解决方案 > 如何将工作表的第一行连接成以逗号分隔的列表?

问题描述

我正在尝试将工作表的第一行连接到以逗号分隔的列表中。它抛出类型不匹配错误。

单元格中的所有值都是字符串,每个单元格中都有一个值。

我也尝试将标头声明为变体。

lc = Cells(1, Columns.Count).End(xlToLeft).column
headers = Join(Range(Cells(1, 1), Cells(1, lc)), ",")

Debug.Print headers

标签: excelvba

解决方案


你不能加入一个Range,你加入一个一维数组。这里隐含的是对 的调用Range.Value,因为该范围包含多个单元格,它将是一个 2D 变量数组:您需要将其传递给Application.Transpose一次以将其转换为一维数组,然后再将其传递给垂直,以便该VBA.Strings.Join功能能够使用。

另外,请注意隐式 ActiveSheet 引用:除非该代码是在工作表模块中编写的(隐式限定符是Me.),否则所有这些不合格RangeCells成员调用都会隐式处理ActiveSheet

With ActiveSheet
    lc = .Cells(1, .Columns.Count).End(xlToLeft).column
    Dim headerCells As Variant
    headerCells = .Range(.Cells(1, 1), .Cells(1, lc)).Value '2D variant array
End With

Dim headers As String
headers = Join(Application.Transpose(Application.Transpose(headerCells)), ",")

Debug.Print headers

推荐阅读