2015-10-05 128 views
0

我寫了一個代碼,在過濾一些行後從其他表導入表的一個代碼。我的問題是,當我超過表中的行數超過表。現在,我想知道是否有辦法通過行數動態修改表的大小。動態修改表大小

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 
+0

有一個看看'update_Table3' companio [將2個Excel表格合併爲一個附加數據]中的子程序(http://stackoverflow.com/questions/9923385/combine-2-excel-tables-into-one-appending-the-data/32680703#32680703) 。它不僅可以將表擴展到新行,還可以刪除收縮表格公式中遺留的'#VALUE!'錯誤。 – Jeeped

回答

1

問題是,調整表格的大小會讓您知道它的名稱更容易。

我已經添加了3行代碼:

  1. 要獲得通過粘貼的數據
  2. 使用的總範圍爲總範圍
  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é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 
    
        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 
    
+0

謝謝你的回答。 – Souma

+0

你的代碼給了我一個Range錯誤。 – Souma

+0

在哪一行?你是否理解創造和調整桌子大小的原則? – R3uK