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分隔)。

希望这可以帮助!