当前位置: 首页 > 知识库问答 >
问题:

Excel VBA用变量复制工作簿/工作表的目标语法

红甫
2023-03-14

我的代码

Sub Sundry_AllFiles(wb1, wbsource, rl, wsctrl, Mths6, Mths12)
(==Declared elsewhere - Dim wb1,wbsource as Workbook
Set wb1 = ThisWorkbook
Set wbsource = Workbooks.Open(FPath & Finame, ReadOnly:=True, Local:=True)
===)
Dim ws As Worksheet
Dim r, rw As Long
Dim fnd As String
Dim fnm As String

fnd = "TOTAL"
fnm = wbsource.Name
Set ws = wb1.Worksheets("Sundry")

'=====Macro runs from wb1 and analyses data in the wbsource

If IsEmpty(Range("A1")) = True Then
wbsource.Close SaveChanges:=False
Exit Sub

Else
            Application.CutCopyMode = False 'POSSIBLE SOLUTION DELETE IF DIDNT WORK
            Columns("A:A").Select
            Selection.Insert shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
            With wbsource.Worksheets(1)
                    For rw = 2 To .Cells(Rows.Count, 6).End(xlUp).Row
                    .Cells(rw, 1) = Application.VLookup(fnd, wbsource.Worksheets(1). _
                    Range("B:E"),4, False)
                    Next rw

                For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
                .Cells(rw, 15) = "=IF(RC[-13]<=TODAY()-90,""Yes"",""No"")"
                Next rw
                .AutoFilterMode = False
            End With

            'Autofilter by tranDate>90 days, copy and append to the ws sheet
            With Range("N" & Rows.Count).End(xlUp)
            .AutoFilter 15, "Yes"
            With wbsource.Worksheets(1)
            Dim LR As Long
            On Error Resume Next
            LR = Range("N" & Rows.Count).End(xlUp).Row
            Range("A2:N" & LR).SpecialCells(xlCellTypeVisible).Copy _
Destination:=wb1.ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)

'#Alternative to Copy Destination that works
            'wb1.Activate
            'ws.Range("a" & Rows.Count).End(xlUp).Offset(1).PasteSpecial

            End With
            End With

            wbsource.Close SaveChanges:=False
End If
End Sub

共有1个答案

寇和璧
2023-03-14

而不是

目标:=wb.ws.cells(rows.count,1).end(xlUp).offset(1,0)

目的地应该是

 类似资料:
  • 我使用这段代码将工作簿中的每一张工作表复制到一个新的工作簿中,它工作得很好,但它颠倒了工作表的顺序,是否有任何办法阻止它这样做? 我正在复制所有的工作表,这样我就可以将它保存为不同的文件扩展名,这是我发现唯一有效的方法。

  • 所以在问这个之前,我搜索并发现了一些与我在这里想要做的相似的事情。 基本上我有工作簿AlphaMaster。这个工作簿是一个模板,我想用它来创建每周的新工作簿。 在本工作簿中,有名为“周一至周六”的工作表,以及带有相应日期的周一、周二等其他工作表。 我创建了一个在打开工作簿时加载的表单。我想要的是当我单击表单运行时,它将: > 将代码保存模板作为新工作簿运行 根据userform1的输入重命名工作

  • 试图从当前工作簿“Create Report.xlsm”中复制工作表名称“Headings Explantions”,该工作簿打开到我要求打开的工作簿中,我得到了下标超出范围的错误

  • 我试图将活动工作表和2个指定工作表复制到一个新工作簿,然后让宏继续在新工作簿上运行,以便在保存它之前更改一些内容 null

  • 我想在Sheet1之后将所有工作表从特定工作簿复制到当前工作簿 此代码正在复制所有工作表,包括隐藏的工作表。如何只复制可见的工作表?

  • 我正试图将所有工作表(7张)从workbook1(wb1)复制到WB2。wb1包含命令按钮,但我不希望它们出现在我的新工作簿中。我正在使用循环将单个工作表从一个工作簿复制到另一个工作簿。但是复制到第二张时出错了。我使用的代码如下:- 循环第一次成功运行,但对于i=2,代码给出错误