我写了一段代码,在过滤后从另一个工作表导入一个表,一些lines.My问题是,当我超过这个表中的行数时,它会超过这个表。现在,我想知道是否有一种方法可以根据行数动态修改表的大小。
Public Sub refresh()
Dim ws1 As Worksheet, ws2 As Worksheet, lr1 As Long, lRow As Long
Set ws1 = ThisWorkbook.Worksheets("Scénarios de menace")
Set ws2 = ThisWorkbook.Worksheets("Analyse de risque")
Application.Calculation = xlCalculationAutomatic
ws2.Range("B6:N" & ws2.Cells(ws2.Rows.Count, 2).End(xlUp).Row).ClearContents
lr1 = ws1.Cells(ws1.Rows.Count, 2).End(xlUp).Row
ws1.Range("A1:A" & lr1).AutoFilter Field:=1, Criteria1:="x"
ws1.Range("B3:N" & lr1).SpecialCells(xlCellTypeVisible).Copy
ws2.Range("B6").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
ws1.Range("A6:A" & lr1).AutoFilter
ws2.Activate: ws2.Cells(1, 1).Activate
End Sub发布于 2015-10-05 16:51:36
问题是,当您知道表的名称时,调整表的大小会更容易。
我在你的代码中添加了3行:
Public Sub refresh() Dim ws1 As Worksheet,ws2 As Worksheet,lr1 As Long,lRow As Long,ResultsRange As String Set ws1 =ThisWorkbook.Worksheets(“Scénario de menace") Set ws2 = ThisWorkbook.Worksheets("Analyse de risque") Application.Calculation = xlCalculationAutomatic ws2.Range("B6:N”& ws2.Cells(ws2.Rows.Count,2).End(xlUp).Row).ClearContents lr1 = ws1.Cells(ws1.Rows.Count,2).End(xlUp).Row ws1.Range("A1:A“& lr1).AutoFilter Field:=1,Criteria1:="x”ws1.Range("B3:N“& lr1).SpecialCells(xlCellTypeVisible).Copy ws2.Range("B6").PasteSpecial Paste:=xlPasteValuesAndNumberFormats ws1.Range("A6:A”& lr1).AutoFilter ws2.Activate ws2.Cells(1,1).Activate ResultsRange = "$B$6:$N$“& ws2.Range("B"& ws2.Rows.Count).End(xlUp).Row ws2.ListObjects.Add(xlSrcRange,Range(ResultsRange),,xlYes).Name = "Results_Table”ws2.ListObjects("Results_Table").Resize Range(ResultsRange) End Sub
https://stackoverflow.com/questions/32943773
复制相似问题