Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:使用复选框选择行并粘贴到不同的工作表_Excel_Vba - Fatal编程技术网

Excel VBA:使用复选框选择行并粘贴到不同的工作表

Excel VBA:使用复选框选择行并粘贴到不同的工作表,excel,vba,Excel,Vba,我试图能够选中一行信息旁边的复选框,然后单击按钮粘贴到另一张表上。我在这里的工作,但我想能够选择多个框,并粘贴到另一个表点击按钮一次 Private Sub CommandButton1_Click() 'TO Bid Numbers 'BID DATE If CheckBox1.Value = True Then Sheets("Bidding").Range("B3").Copy Sheets("Bid Numbers").Range("A1048576").End(xlU

我试图能够选中一行信息旁边的复选框,然后单击按钮粘贴到另一张表上。我在这里的工作,但我想能够选择多个框,并粘贴到另一个表点击按钮一次

Private Sub CommandButton1_Click()
'TO Bid Numbers

    'BID DATE
    If CheckBox1.Value = True Then Sheets("Bidding").Range("B3").Copy Sheets("Bid Numbers").Range("A1048576").End(xlUp).Offset(1, 0)

    'PROJECT NAME
    If CheckBox1.Value = True Then Sheets("Bidding").Range("C3").Copy Sheets("Bid Numbers").Range("B1048576").End(xlUp).Offset(1, 0)

    'ESTIMATOR
    If CheckBox1.Value = True Then Sheets("Bidding").Range("D3").Copy Sheets("Bid Numbers").Range("C1048576").End(xlUp).Offset(1, 0)

    'OUR PRICE
    If CheckBox1.Value = True Then Sheets("Bidding").Range("E3").Copy Sheets("Bid Numbers").Range("D1048576").End(xlUp).Offset(1, 0)

End Sub

这适用于窗体控件复选框:

循环检查工作表上的每个复选框,看是否勾选了。如果是,则查看
TopLeftCell
以获取复选框的位置,并将
EntireRow
添加到最终将复制并粘贴到第二张图纸上的范围

Sub Test()

    Dim chkBx As Shape
    Dim rngToCopy As Range

    For Each chkBx In ThisWorkbook.Worksheets("Sheet1").Shapes
        If chkBx.Type = 8 Then
            If chkBx.OLEFormat.Object.Value = 1 Then
                If rngToCopy Is Nothing Then
                    Set rngToCopy = chkBx.TopLeftCell.EntireRow
                Else
                    Set rngToCopy = Union(rngToCopy, chkBx.TopLeftCell.EntireRow)
                End If
            End If
        End If
    Next chkBx

    rngToCopy.Copy Destination:=ThisWorkbook.Worksheets("Sheet2").Range("A1")

End Sub

到目前为止你试过什么?如果这适用于
CheckBox1
,那么您不能想出如何使其适用于
CheckBox2
,等等吗?此外,您还可以在
If
块中执行所有复制/过去操作。如果Checkbox1.Value=True,则无需重复执行布尔值
,只需引用一个复选框。