在定义宏的工作表中,id喜欢迭代所有列并保存填充在数组中的列。
x = IIf(WorksheetFunction.CountA(Columns("C")) > 0, 1, 0)
这是我如何检查列是否为空的示例。如果列已填满,则返回1;如果列为空,则返回0。
我想知道的另一件事是我如何将列名称作为变量而不是硬编码字符串("C"
,如上所示)。
我喜欢这个数组看起来像:
("A", "B", "C", "E", "G", "H", "I")
答案 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
,我们稍后将其用作分隔符。|
函数填充动态数组DataCols
以返回字符串数组(由我们包含的Split
分隔)。希望这有帮助!