Excel 将数据复制到不同的命名多张图纸中

Excel 将数据复制到不同的命名多张图纸中,excel,vba,Excel,Vba,亲爱的 我是一个初学者,尝试编写一个宏,它允许首先根据条件删除行,然后根据第一个主工作表中的条件创建新工作表,并将第一个主工作表中的数据添加到多个命名工作表中 根据条件删除行(运行正常) 根据第一张主图纸中的条件创建新图纸(运行正常) 添加第一个主工作表中的数据(恒定范围I4:I6) 将多个命名图纸合并到所有图纸中的A1:A3(由该宏创建)。不幸的是,我不知道如何做到这一点:-( 你能帮我一下吗 Private Sub CommandButton1_Click() Dim lastr

亲爱的

我是一个初学者,尝试编写一个宏,它允许首先根据条件删除行,然后根据第一个主工作表中的条件创建新工作表,并将第一个主工作表中的数据添加到多个命名工作表中

  • 根据条件删除行(运行正常)
  • 根据第一张主图纸中的条件创建新图纸(运行正常)
  • 添加第一个主工作表中的数据(恒定范围I4:I6) 将多个命名图纸合并到所有图纸中的A1:A3(由该宏创建)。不幸的是,我不知道如何做到这一点:-(
你能帮我一下吗

Private Sub CommandButton1_Click()

   Dim lastrow As Long, x As Long
    lastrow = Cells(Rows.Count, "A").End(xlUp).Row
    For x = lastrow To 1 Step -1
        If UCase(Cells(x, 3).Value) = "0" And _
        UCase(Cells(x, 6).Value) = "0" Then
        Rows(x).Delete
        End If
    Next

    lastcell = ThisWorkbook.Worksheets("Obratova predvaha").Cells(Rows.Count, 1).End(xlUp).Row

    For i = 2 To lastcell

    With ThisWorkbook

    newname = ThisWorkbook.Worksheets("Obratova predvaha").Cells(i, 1).Value

    .Sheets.Add after:=.Sheets(.Sheets.Count)

    ActiveSheet.Name = newname

    End With

    Next

    ThisWorkbook.Worksheets("Obratova predvaha").Activate
    ThisWorkbook.Worksheets("Obratova predvaha").Cells(1, 1).Select

End Sub

不太清楚您的描述,但您可以尝试以下方法:

编辑添加工作表变量,并通过隐式假设新工作表为活动工作表,防止在添加新工作表和写入新工作表之间出现任何(可能?)延时错误行为:

Option Explicit

Private Sub CommandButton1_Click()
    Dim lastrow As Long, i As Long
    Dim newSheet As Worksheet

    With Worksheets("Obratova predvaha")
        lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = lastrow To 1 Step -1
            If UCase(.Cells(i, 3).Value) = "0" And UCase(.Cells(i, 6).Value) = "0" Then .Rows(i).Delete
        Next

        lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = 2 To lastrow
            Set newSheet = Sheets.Add(after:=Sheets(Sheets.Count)) ' add a new sheet and hold its reference in newSheet  variable
            newSheet.Range("A1:A3").Value = .Range("I4:I6").Value ' copy referenced sheet I4:I6 values into newly added sheet cells A1:A3
            newSheet.Name = .Cells(i, 1).Value ' change the name of newly added sheet
        Next
    End With
End Sub

Thanx。不幸的是,它不能正常运行(宏将数据填入“主工作表”。我只需要将数据从主工作表(名称“Obratova predvaha”)复制到“主工作表”(即“Obratova predvaha”工作表)中除“Obratova predvaha”之外的所有其他工作表中已经存在,否则您如何将它们的值从那里复制到其他工作表?对不起…我需要复制的数据已经存在于主工作表中如果您需要取消它们,请添加
.Range(“I4:I6”)CytCyp< <代码> >在代码>结束之前损坏< /代码>。如果我的答案解决了您的问题,那么您可以考虑将它标记为接受。谢谢您仍然不能正常工作……当我使用范围(“A1:A3”)。value =范围(“I4:I6”)。这也是不需要的,我只需要将数据从主工作表(“Obratova predvaha”)复制到其他工作表中(2,3…xxx=但命名不同,而不仅仅是Sheet2、Sheet3等)。