首页 文章

Excel VBA - 复制多个范围并按选择顺序粘贴它们而不覆盖

提问于
浏览
0

所以我没有VBA背景,但我已经设法通过搜索互联网把它放在一起 . 它适用于工作簿,其最终目标是让用户(工程师)选择某些复选框 . 完成后(并会有很多复选框),他们点击“Build”按钮,根据他们的选择,他们将生成一个新的工作表或新的工作簿(尚未确定那个)与所有按顺序粘贴到其中的所选信息 .

这是代码:

Sub Merge()

    If Range("F3") = True Then

            Sheets("Data").Select
            Range("A1:A8").Select
           Selection.Copy

            Sheets("UI").Select
            Cells(1, 1).Select
            Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
               False, Transpose:=False
            Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
               False, Transpose:=False
        Else
              MsgBox "Part 1 - Failed."
    End If

    If Range("F6") = True Then

            Sheets("Data").Select
            Range("A10:A17").Select
            Selection.Copy

            Sheets("UI").Select
            Cells(10, 1).Select
            Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
               False, Transpose:=False
            Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
               False, Transpose:=False
        Else
            MsgBox "Part 2 - Failed"
    End If

    If Range("F9") = True Then

            Sheets("Data").Select
            Range("A19:A26").Select
            Selection.Copy

            Sheets("UI").Select
            Cells(19, 1).Select
            Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
               False, Transpose:=False
            Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
               False, Transpose:=False
        Else
            MsgBox "Part 3 - Failed"
    End If

End Sub

这里是我的谷歌驱动器中的文件,如果这让你更容易:https://drive.google.com/file/d/0Bza853yM-QSMSlFWbElBc1dsbGM/edit?usp=sharing

目前,它将“True”的范围粘贴到预定义的单元格范围中 . 但是,我想要的是如果Red = True和Green = True,那么红色被粘贴到A1:A8中,Green将被粘贴到A10:A18中 . 类似地,如果蓝色和绿色为真,或者只有蓝色或绿色为真,则它们粘贴到A1:A8中,下一个“True”语句粘贴在它们下面 . 这样你可以有任意数量的True语句,它们将按顺序粘贴,它们之间只有1行,而不是8或20行 .

我查看了这个网站和其他人,但没有找到任何东西 . 因此,我不确定这是否可能,或者我对这个主题过于无知,无法搜索我正在寻找的概念 .

谢谢你的智慧! -担

1 回答

  • 0

    您可以在“UI”工作表上找到下一个空白单元格,然后将下一组结果粘贴到该区域,而不是将副本粘贴到静态范围中 .

    代码找到下一个空白单元格...

    Sheets("UI").Select
    Range("A2").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    

相关问题