Excel VBA应用程序调用方复制2个范围

Excel VBA应用程序调用方复制2个范围,excel,vba,copy,range,Excel,Vba,Copy,Range,朋友们,我的编程能力很差,但也许有人愿意帮忙 我的电子表格在保护区中包含18个范围和2个不同的标题。我需要将1个标题和1个范围复制并组合到另一个未受保护的区域。用户应该按下一个按钮,宏将数据带到新的位置,在那里可以粘贴数据 对于按钮操作,我有一个application.caller用于隐藏和显示行。我认为这是一个好的开始。我还有一个用于1组范围的复制宏。我想把这两个合并到一个新的宏中 Sub Macro_copy_RIVA1() Range("RHEAD").Copy Rang

朋友们,我的编程能力很差,但也许有人愿意帮忙

我的电子表格在保护区中包含18个范围和2个不同的标题。我需要将1个标题和1个范围复制并组合到另一个未受保护的区域。用户应该按下一个按钮,宏将数据带到新的位置,在那里可以粘贴数据

对于按钮操作,我有一个application.caller用于隐藏和显示行。我认为这是一个好的开始。我还有一个用于1组范围的复制宏。我想把这两个合并到一个新的宏中

Sub Macro_copy_RIVA1()

    Range("RHEAD").Copy
    Range("RIVA1").Copy
    Application.Goto Reference:="R1120C2"
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Cut
End Sub 
我的隐藏/显示行的应用程序调用方是(由于Stackoverflow)

Sub ShowHideRows()
暗淡的边缘
'将调用按钮名称拆分为数组
'(数组将以零为基)
arr=Split(Application.Caller,“\”)
“**编辑**检查数组的大小应为。。。
如果UBound(arr)3,则退出Sub
如果IsNumeric(arr(1))和IsNumeric(arr(2)),则
如果代码在工作表模块中,则使用ActiveSheet的“Me”,否则使用“ActiveSheet”
.Unprotect密码:=“”
'arr(1)确定起始行
'arr(2)确定行的#
'arr(3)确定行是否隐藏
.Cells(arr(1,1).调整大小(arr(2,1).EntireRow.Hidden=(arr(3)=“H”)
。保护密码:=“”
以
如果结束
端接头`
我的范围称为:

标题:

  • RHEAD1
  • RHEAD2
范围:

  • 里瓦1
  • 里瓦2
  • 里瓦3
  • 里瓦6
  • RMVA1
  • RMVA2
  • RMVA12
按钮的建议名称:btn_RHEAD1_RIVA1或btn_RHEAD2_RMVA12

如何从执行复制任务的应用程序调用方运行宏? 谢谢

Sub ShowHideRows()

    Dim arr

    'split the calling button name into an array
    '  (array will be zero-based)
    arr = Split(Application.Caller, "_")

    '**EDIT** check array is expected size...
    If UBound(arr) <> 3 Then Exit Sub

    If IsNumeric(arr(1)) And IsNumeric(arr(2)) Then
        With ActiveSheet  ' "Me" if the code is in the sheet module, else "ActiveSheet"
            .Unprotect Password:=""

            'arr(1) determines start row
            'arr(2) determines # of rows
            'arr(3) determines if rows are hidden or not
            .Cells(arr(1), 1).Resize(arr(2), 1).EntireRow.Hidden = (arr(3) = "H")
            .Protect Password:=""
        End With
    End If
End Sub`