-1

示例工作簿链接: http: //www.wikisend.com/download/245286/MIS%20-%20July%20%20 (1).xlsm

该工作簿具有 vba 代码,该代码删除所有工作表,然后通过从其他工作簿复制工作表来创建新工作表。

我想要另一个 vba 代码自动生成包含所有格式和数据的执行摘要表。一些公式定义不明确,因此以后必须手动编辑它们。由于其他工作表每个月都会更改,因此手动引用会很乏味

我当前的代码:

    Sub WorksheetLoop()

        Sheets.Add After:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Select
        Sheets(Sheets.Count).Name = "Executive Summary"


        Sheets("Executive Summary").Select
'Some formatting code on sheet Executive Summary

    Dim ws As Worksheet
       ' Begin the loop.
currentRow=6 'start entering data from row 6
     For Each ws In ThisWorkbook.Worksheets

'Assign cell at row=current row and col B reference to cell G5 at sheet ws
'Assign cell at row=current row and col F reference to cell J15 at sheet ws

'Assign cell at row=current row and col H reference to cell T5 at sheet ws


'increment Current row by 1
    'don't know what to do here    
    Next ws

'select entire region( all filled cells)
'format text, add border etc

    End Sub

请告诉我引用的语法

4

1 回答 1

0

解决了问题

Sub test()

    Sheets("Executive Summary").Select
    Range("A6:P23").Select
    Range("P6").Activate
    Selection.ClearContents
    'Dim ws As Worksheet
    Dim Row As Integer
    Row = 6
    For Each ws In ThisWorkbook.Worksheets
     If ws.Name <> "Executive Summary" Then
        Range("A" & Row).Value = "='" & ws.Name & "'!C3"
        Range("B" & Row).Value = "='" & ws.Name & "'!G5"
        Range("C" & Row).Value = "='" & ws.Name & "'!G39"
        Range("D" & Row).Value = "='" & ws.Name & "'!H39"
        Range("E" & Row).Value = "=D" & Row & "-C" & Row
        Range("F" & Row).Value = "=IF(A" & Row & "=" & Chr(34) & "POWER" & Chr(34) & ",+E" & Row & "*B" & Row & ",+E" & Row & "*B" & Row & "/100)"
        Range("G" & Row).Value = "=IF(A" & Row & "=" & Chr(34) & "POWER" & Chr(34) & ",+(J" & Row & "-D" & Row & ")*B" & Row & ",+(J" & Row & "-D" & Row & ")*B" & Row & "/100)"
        '"=(J" & Row & "-D" & Row & ")*B" & Row & "/100"
        Range("H" & Row).Value = "=I" & Row & "-F" & Row & "-G" & Row
        Range("I" & Row).Value = 0
        Range("J" & Row).Value = "='" & ws.Name & "'!I39"
        Range("K" & Row).Value = "='" & ws.Name & "'!L5"
        Range("L" & Row).Value = "='" & ws.Name & "'!K39"
        Range("M" & Row).Value = "=G" & Row
        Range("N" & Row).Value = "=O" & Row & "-L" & Row & "-M" & Row
        Range("O" & Row).Value = "=I" & Row
        Range("P" & Row).Value = "='" & ws.Name & "'!M39"
        Row = Row + 1
     End If

     Next ws

End Sub
于 2012-08-10T08:57:34.793 回答