【问题标题】:Copy data into different named multiple sheets将数据复制到不同的命名多个工作表中
【发布时间】:2018-11-25 13:30:58
【问题描述】:

亲爱的,

我是一个初学者,并尝试准备宏,该宏首先允许根据条件删除行,而不是根据第一个主工作表中的条件创建新工作表并将第一个主工作表中的数据添加到多个命名工作表中。

  • 根据条件删除行(运行正常)
  • 根据第一个主工作表的标准创建新工作表(运行正常)
  • 从第一个主表添加数据(恒定范围 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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    不太确定你的描述,但你可以试试这个:

    已编辑以添加工作表变量并通过隐含地将其假设为 ActiveSheet 来防止在新工作表添加和写入之间发生任何(可能的?)时间间隔错误行为:

    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
    

    【讨论】:

    • 感谢这个。不幸的是,它运行不正常(甚至将数据宏填充到“主工作表”中。我只需要将数据从主工作表(名称“Obratova predvaha”)复制到“Obratova predvaha”以外的所有其他工作表中跨度>
    • 数据在“主”工作表(即“Obratova predvaha”工作表)已经,否则你怎么能将它们的值从那里复制到其他工作表?
    • 对不起...我需要复制的数据已经存在于主工作表中
    • 如果您需要取消它们,只需在 End With 之前添加 .Range("I4:I6").ClearContents。如果我的回答解决了您的问题,那么您也可以考虑将其标记为已接受。谢谢
    • 仍然无法正常工作...当我使用 Range("A1:A3").value = .Range("I4:I6").value 时,将数据宏复制到主工作表“Obratova predvaha”也是不需要的,我只需要将数据从主工作表(“Obratova predvaha”)复制到其他工作表(2,3....xxx = 但名称不同,而不仅仅是 Sheet2, Sheet3 等)。
    猜你喜欢
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多