1
我有一個十張工作簿。在表1中,我想列出表格名稱(表3至10),表格中的列標題值(僅列8和更多),以及該列中包含數據的單元格的數量。循環瀏覽工作表並嘗試統計列中的數據
我的代碼適用於這三個要求中的兩個。在我的工作表1(名爲:SheetName Columns)上,我得到列A中的圖表名稱和列B中的列標題,但沒有任何運氣獲取該表/列的數據行數。
在我的工作表1上,A列在該工作表第7列之後每列數重複一次,這很好。
Sub ListColumnHeadings()
Dim cNbrs As Long, i As Integer, tr As Long, tc As Long, wst As Worksheet
Dim charList(300, 300) As String
Dim ws As Worksheet, OutputRow As Long
Dim myRange As Range
Dim NumRows As Integer
Dim colNbr As Range
Set shSkip1 = ThisWorkbook.Sheets("SheetName Record Cnt")
Set shList = ThisWorkbook.Sheets("SheetName Columns")
OutputRow = 1
On Error Resume Next
For Each ws In Worksheets
If ws.Name <> shList.Name And ws.Name <> shSkip1.Name Then
cNbrs = ws.Range("A1").CurrentRegion.Columns.Count
For i = 8 To cNbrs
shList.Cells(OutputRow, "A").Value = ws.Name
shList.Cells(OutputRow, "B").Value = ws.Cells(1, i)
Set myRange = ws.Columns(i).Select
NumRows = ws.Application.WorksheetFunction.CountA(myRange)
If NumRows > 0 Then
shList.Cells(OutputRow, "C").Value = NumRows
End If
OutputRow = OutputRow + 1
Next i
End If
Next ws
End Sub
值得注意的是,如果OP沒有使用「On Error Resume Next」,那麼錯誤將會更加容易看見和調試。 – nwhaught
@nwhaught - 我知道有一個原因,我不使用這些語句(他們可以隱藏一些調試信息),很好的電話! – BruceWayne
真棒,這個小小的調整使它完美的工作。我只是學習這個VBA,看起來像很多功能和屬性來弄清楚它們是如何工作的。再次感謝,我刪除了「在錯誤恢復下一個」聲明... – DavidKn