VBA:遍历工作表的所有列
在macros定义的工作表中,id像遍历所有列并保存填充到数组中的那些列。
x = IIf(WorksheetFunction.CountA(Columns("C")) > 0, 1, 0)
这是我如何检查列是否为空的示例。 如果列已填充,则返回1,如果为空,则返回0。
另一个我想知道的是我可以给列名作为variables而不是硬编码的string( "C"
如你所见)。
像数组一样,看起来像:( ("A", "B", "C", "E", "G", "H", "I")
这个代码应该做的伎俩:
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
格式的string),并使用Mid(..)
获取$
字符和:
字符之间的字母。 - 将该列字符追加到
strTemp
,后跟一个Pipe|
我们稍后将使用它作为分隔符。 - 然后通过使用strTemp上的
Split
函数来填充dynamic数组DataCols
,以返回一个string数组(由我们包含的|
s分隔)。
希望这可以帮助!