2017-08-17 105 views
0

我試圖創建一個彙總表,其中將有超過7列的46行數據。因此,我將從46張紙中提取數據,並將有7個不同的數據點。Excel VBA代碼來填充彙總表與鏈接單元格的公式

我可以使用偏移功能來簡化此代碼

Sub AutoFillSheetNames() 
    Dim ActRng As Range 
    Dim ActWsName As String 
    Dim ActAddress As String 
    Dim Ws As Worksheet 

    On Error Resume Next 

    Set ActRng = Application.ActiveCell 
    ActWsName = Application.ActiveSheet.Name 
    ActAddress = ActRng.Address(False, False) 

    Application.ScreenUpdating = False 

    xIndex = 0 
    For Each Ws In Application.Worksheets 
     If Ws.Name <> ActWsName Then 
      ActRng.Offset(xIndex, 0).Value = "='" & Ws.Name & "'!" & ActAddress 
      xIndex = xIndex + 1 
     End If 
    Next 

    Application.ScreenUpdating = True 
End Sub 

我想實際的細胞連接,使他們能夠自動更新,並且需要VBA,因爲它會爲許多不同的Excel工作簿不同tabnames來完成。例如,我在第一張48張工作表上將「彙總」工作表上的單元格F2鏈接到F2,然後正確輸入剩餘47個單元格的公式,直到F48,此處的代碼工作正常。但是,當我想要將彙總表上的單元格H2鏈接到第一張表格上的G7時,我應該在上面的代碼中更改哪些內容?

+0

備註:我幾乎不推薦在不使用正確的錯誤處理的情況下使用'On Error Resume Next'。通過這種方式,您只能將錯誤消息靜音,但錯誤仍然存​​在,您不會看到發生了什麼問題。 –

+0

問題1)你爲什麼有47張?請考慮工作簿設計,因爲這可以顯着改善編碼。話雖如此,你可以把你所有的工作表名稱放入一個數組中並循環遍歷該數組 – user1

回答

0

我真的不明白你想要完成什麼。下面的代碼將鏈接彙總表中每個工作表的第一行(即A1:G1)中的7個單元格。將會有多少張表格與表格一樣多。但我不知道這是不是你真正想要的。

Sub AutoFillSheetNames() 
    Dim CurrWorkBK As Workbook 
    Dim CurrSheet As Worksheet 
    Dim TheOtherSheets As Worksheet 
    Dim MyRow As Long 
    Dim MyCol As Long 

    Set CurrWorkBK = ThisWorkbook 
    Set CurrSheet = CurrWorkBK.Worksheets("Summary") 

    MyRow = 1 
    For Each TheOtherSheets In CurrWorkBK.Worksheets 
     If TheOtherSheets.Name <> CurrSheet.Name Then 
      For MyCol = 1 To 7 
       CurrSheet.Cells(MyRow, MyCol).Value = "='" & TheOtherSheets.Name & "'!" & TheOtherSheets.Cells(1, MyCol).Address 
      Next MyCol 
      MyRow = MyRow + 1 
     End If 
    Next 
End Sub 
+0

這很簡單且有幫助。我可以調整它以適用於鏈接到不同的單元格,導致可能是一個低效的冗長的代碼,但它會產生所需的結果。 –

+0

很高興幫助。如果我正確地解釋你的帖子,你可以用'CurrSheet.Cells(MyRow,MyCol).Value =「='」&TheOtherSheets.Name&「'!」來更改上面的代碼。 &TheOtherSheets.Cells(7,MyCol + 6).Address'(這會將原點從A1移到G7)。但是,我不確定這是否是你想要的。 – CMArg

相關問題