VBA:遍历工作表的所有列

时间:2014-06-26 09:28:33

标签: excel vba excel-vba

在定义宏的工作表中,id喜欢迭代所有列并保存填充在数组中的列。

x = IIf(WorksheetFunction.CountA(Columns("C")) > 0, 1, 0)

这是我如何检查列是否为空的示例。如果列已填满,则返回1;如果列为空,则返回0。

我想知道的另一件事是我如何将列名称作为变量而不是硬编码字符串("C",如上所示)。

我喜欢这个数组看起来像: ("A", "B", "C", "E", "G", "H", "I")

1 个答案:

答案 0 :(得分:2)

这段代码可以解决问题:

Dim DataCols() As String
Dim strTemp As String
Dim strCol As String
Dim i As Long

For i = 1 To ActiveSheet.UsedRange.Columns.Count
    If WorksheetFunction.CountA(Columns(i)) > 0 Then
        strCol = Columns(i).Address
        strTemp = strTemp & Mid(strCol, 2, InStr(strCol, ":") - 2) & "|"
    End If
Next i
strTemp = Left(strTemp, Len(strTemp) - 1) 'Trim trailing | 

DataCols = Split(strTemp, "|")
  • For..Next循环遍历活动工作表中的所有列。
  • 您在示例中也使用了WorksheetFunction.CountA,然后确定当前列中是否包含任何数据。
  • 如果列包含数据,我们将获取其地址(其格式为$A:$A的字符串)并使用Mid(..)获取$字符与{{之间的字母1}}字符。
  • 将该列字母附加到:,然后附加一个管道strTemp,我们稍后将其用作分隔符。
  • 然后使用strTemp上的|函数填充动态数组DataCols以返回字符串数组(由我们包含的Split分隔)。

希望这有帮助!