VBA 包括表格格式的空单元格



对VBA来说非常陌生。

我想做什么:

1(将工作表从(源(工作簿复制到活动(主(工作簿 2(删除主工作簿中复制数据的不必要列 3(选择主工作簿中有数据的单元格并格式化为表格(这是我卡住的地方(

Sub first_sub()
'Open user Raw Data workbook
Workbooks.Open Filename:= _
"C:Users" & Environ("UserName") & "DownloadsFile.xls"
'Copy user Raw Data sheet to Data Master sheet
Workbooks("File.xls").Sheets("Records").Copy _
Before:=Workbooks("Macro Main.xlsm").Sheets(1)
'Close user Raw Data
Workbooks("File.xls").Close
End Sub
Sub Format()
Sheets("Records").Range("D:G,I:K,M:Y,AA:AA,AF:AM").EntireColumn.Clear
Sheets("Records").Range("D:G,I:K,M:Y,AA:AA,AF:AM").EntireColumn.Delete
End Sub
Sub MakeTable()
Dim tbl As ListObject
Dim rng As Range
Set rng = Range(Range("A1"), Range("A1").SpecialCells(xlLastCell))
Set tbl = ActiveSheet.ListObjects.Add(xlSrcRange, rng, , xlYes)
tbl.TableStyle = "TableStyleMedium3"
End Sub

问题出在第 3 点。出于某些原因,VBA 选择最多到"AM"的列,即使我在以前的子中删除了它们,结果 - 我有一个充满空列的表一直到 AM。如何解决这个问题?提前谢谢你。

检查.SpecialCells(xlLastCell)的工作原理:Range.SpecialCells Method (Excel(

我认为您的范围变量rng引用的范围Range("A1")到列范围 AM 中最后使用的单元格

Set rng = Range(Range("A1"), Range("A1").SpecialCells(xlLastCell))

尝试在之后添加此行,以检查范围是否实际针对所需的范围:

rng.select

要解决此问题,您可以尝试:

Set rng = Range("A1").CurrentRegion

或者查找 A 列中的最后一个单元格...

法典:

Sub MakeTable()
Dim tbl As ListObject
Dim rng As Range
Set rng = Range("A1").CurrentRegion
Set tbl = ActiveSheet.ListObjects.Add(xlSrcRange, rng, , xlYes)
tbl.TableStyle = "TableStyleMedium3"
End Sub

最新更新