Excel VBA如何将一部分单元格复制并粘贴到新制作的工作表中

时间:2017-11-01 07:40:36

标签: excel vba excel-vba copy paste

我正在制作一个帮助人们追踪资金的预算员。我目前有一堆代码检查当前月份,并试图制作一个名为(MM / YYYY)的新工作表,除非该工作表已经制作,如果已经制作,则不会发生任何事情。

Private Sub Worksheet_Change(ByVal Target As Range)
    nowMonth = Month(Now)
    nowYear = Year(Now)
    sheetNameStr = nowMonth & "," & nowYear

    sheetExists = False
    For Each Sheet In Worksheets
        If sheetNameStr = Sheet.Name Then
            sheetExists = True
        End If
    Next Sheet
    If sheetExists = False Then
        Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
        ws.Name = sheetNameStr
        MsgBox ("New sheet named " & sheetNameStr & "was created")
    End If
    Sheets("Main").Activate

    Worksheets("Main").Range("A5:D300").Copy Worksheets("sheetNameStr").Range("A1")
End Sub

我遇到的问题是尝试复制并粘贴我购买/收入的历史记录并将其粘贴到新工作表中。

总是得到

  

运行时错误' 9':下标超出范围

错误。

如果有人能提供帮助,那就非常感谢!

1 个答案:

答案 0 :(得分:0)

你的话说

Worksheets("Main").Range("A5:D300").Copy Worksheets("sheetNameStr").Range("A1")

指的是一个名为"sheetNameStr"的工作表,但您确实想要引用一个名称包含在变量sheetNameStr中的工作表,即

Worksheets("Main").Range("A5:D300").Copy Worksheets(sheetNameStr).Range("A1")