回答上個問題,爲我提供了此循環的基礎。在不同尺寸表中循環顯示Excel VBA
VBA Excel - Loop through worksheet creating tables
不過,我遇到了一個問題,我可以與右下它的行沒有數據的表頭。在這種情況下,我只想製作一個只有標題的表格。
我試過這段代碼 - 簡單地將rngStart下面的行分配爲oneDown。然後創建一個if /然後檢查是否LEN(oneDown)> 0
`Dim ws As Worksheet
Set ws = ActiveSheet
With ws
'find last row of data in column A
Dim lRow As Long
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
Dim rngStart As Range
Set rngStart = .Range("A3")
'set counter variable for naming tables
Dim i As Long
i = i + 1
Dim oneDown As Long
Set oneDown =rngStart.Offset(1)
Do
if Len(oneDown) > 0 Then
'create table range
Set rngTable = .Range(rngStart.End(xlToRight),rngStart.End(xlDown))
'create table
.ListObjects.Add(xlSrcRange, rngTable.Resize(rngTable.Rows.Count, rngStart.End(xlToRight).Column), , xlYes).Name = "Table" & i
'set style
.ListObjects("Table" & i).TableStyle = "TableStyleLight9"
'find next table range start
Set rngStart = rngTable.End(xlDown).Offset(2)
Else
'create table range
Set rngTable = .Range(rngStart.End(xlToRight))
'create table
.ListObjects.Add(xlSrcRange, rngTable.Resize(rngTable.Rows.Count, rngStart.End(xlToRight).Column), , xlYes).Name = "Table" & i
.ListObjects("Table" & i).TableStyle = "TableStyleLight9"
Set rngStart = rngTable.End(xlDown).Offset(2)
End If
i = i + 1
Loop Until rngStart.Row > lRow
End With`
我得到了相同的結果與我的數據,如果我沒有足夠的的if/then到位。
嘗試 設置oneDown = rngStart.Offset(1,1) – Siva
@Silva感謝小費,但也沒有工作。用我的if/then邏輯做一切正確嗎? –
@ScottHoltzman有什麼想法? –