宏以跨多个Excel工作表运行过程

时间:2015-07-02 08:36:10

标签: excel-vba row copy-paste worksheet vba

我遇到了这个问题。我需要运行一个宏来执行以下操作:

  1. 在工作表上找到名为" Baseline"的表格中的最后一行。
  2. 向该表添加一行
  3. 将格式和公式(但不是值)从上面的行复制到新行。
  4. 对其他工作表(称为Quarter 1,Quarter 2等)重复此过程,其结构与名为Baseline的工作表相同。
  5. 我的问题是,该过程似乎只适用于第一个工作表Baseline,但不适用于任何其他工作表。我想知道问题是否是我试图让代码只复制公式和格式的方式。

    以下是代码,仅适用于Baseline和Quarter 1工作表:

    DbContext.DbSet<TEntity>()

    有人有什么建议吗?

    由于

1 个答案:

答案 0 :(得分:0)

您需要使用Worksheet类型变量。即使我不完全同意选择所有内容,我也没有更正您的技术解决方案。

Sub onesheet(ws As Worksheet)
On Error GoTo errhandler
ws.Activate

Dim rgeLastRowQ1 As Range
Set rgeLastRowQ1 = ws.Cells.Find("Cost")
' Select and Copy Last Row

rgeLastRowQ1.End(xlDown).EntireRow.Select

Selection.Offset(1).EntireRow.Insert

rgeLastRowQ1.End(xlDown).EntireRow.Select

Selection.Copy

rgeLastRowQ1.End(xlDown).Offset(1).EntireRow.Select

rgeLastRowQ1.End(xlDown).Offset(1).EntireRow.PasteSpecial

Application.CutCopyMode = False
Selection.SpecialCells(xlCellTypeConstants, 23).Select
Selection.ClearContents
Exit Sub

errhandler:

Application.CutCopyMode = False
End Sub

Sub sheetloop()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
    If ws.Name = "Baseline" Or ws.Name Like "Quarter*" Then Call onesheet(ws)
Next ws
End Sub