2016-11-21 308 views
2

我想在Excel中将工作表中的某个范围格式化为表格。该格式将始终排在10 开始。为了做到这一点,我写了下面的代码:格式化为动态表格Excel VBA

Set rng = Range(Range("B10"), Range("B10").End(xlUp).SpecialCells(xlLastCell)) 
Set table = Sheets("Results").ListObjects.Add(xlSrcRange, rng, , xlYes) 
table.TableStyle = "TableStyleMedium13" 

截至目前,该格式是从第10行进行,直到工作结束 - 即使是在空行。但是,我希望表格只能格式化到最后一行数据,并且考虑到数据量会有所不同,因此会动态地执行此操作。我怎样才能做到这一点?

回答

3

下面的代码将格式化所有单元格从“B10”直到列B中的数据的最后一行(它也将格式化中间的空白行,以防有空隙)。

Dim LastRow As Long 

With Sheets("Results") 
    ' find last row with data in Column B 
    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row 

    ' set Rng from B10 untill last row with data in Column B 
    Set Rng = Range("B10:B" & LastRow) 
    Set Table = .ListObjects.Add(xlSrcRange, Rng, , xlYes) 
    Table.TableStyle = "TableStyleMedium13" 
End With 
+1

它工作。谢谢! – franciscofcosta

+1

@franciscofcosta欢迎您,请标记小** V **标记为答案 –

1
Range("B" & Rows.Count).End(xlUp) 

这应该工作 - 将会完全确定最后一行人口。