Excel 使用命令按钮将复选框复制到每5个单元格

Excel 使用命令按钮将复选框复制到每5个单元格,excel,checkbox,copy-paste,vba,Excel,Checkbox,Copy Paste,Vba,我有一个无法解决的问题。我编写了以下代码: Private Sub CommandButton2_Click() Sheets("sheet2").OLEObjects("CheckBox1").Copy Sheets("sheet3").Range("V7").PasteSpecial End Sub 此代码从V7单元格开始,将复选框从第2页复制到第3页。现在,我希望下次按下命令按钮将数据粘贴到单元格V12,下次粘贴到单元格V17等。我的vba知识不如您所看到的那么好。我不知道您在Sh

我有一个无法解决的问题。我编写了以下代码:

Private Sub CommandButton2_Click()

Sheets("sheet2").OLEObjects("CheckBox1").Copy

Sheets("sheet3").Range("V7").PasteSpecial

End Sub

此代码从V7单元格开始,将复选框从第2页复制到第3页。现在,我希望下次按下命令按钮将数据粘贴到单元格V12,下次粘贴到单元格V17等。我的vba知识不如您所看到的那么好。

我不知道您在Sheet3.RangeV7和Sheet3.RangeV12中得到了什么数据

但是,在粘贴特殊数据之前,您应该跟踪上次将数据粘贴到Sheetssheets3中Sheetssheets3的特定单元格中的位置,例如:SheetsSheet3.RangeA1

然后,您可以将特殊内容粘贴到下面的第5行单元格,如下所示:

图纸表3.范围图纸表3.范围A1.偏移量5,0.5 紧接着更新SheetsSheets3.RangeA1=Sheetssheet3.RangeSheetsSheets3.RangeA1.Offset5,0.Address

因此,这项工作应该是:

    Private Sub CommandButton2_Click()
    Dim oWsSource as Worksheet
    Dim oWsDestination as Worksheet
    Set oWsDestination = ThisWorkbook.Worksheet("Sheets3")
    Set oWsSource = ThisWorkbook.Worksheet("Sheets2")
        'Do the copy
        oWsSource.OLEObjects("CheckBox1").Copy
        oWsDestination.Range(oWsDestination.Range("A1").Value).Offset(5,0)).PasteSpecial
        oWsDestination.Range("A1").Value = oWsDestination.Range(oWsDestination.Range("A1").Value).Offset(5, 0)).Address

    End Sub

使用全局变量。这些必须位于工作表、模块或表单代码的顶部,高于所有子模块和函数

然后将其用作范围内的行号。兰奇V&lRow


此代码将查看要粘贴到的工作表中已有多少复选框,并为每个复选框添加5行,然后在最后一行下粘贴5行

Private Sub CommandButton2_Click()

' copy checkbox
Sheets("sheet2").OLEObjects("CheckBox1").Copy

Dim wks As Worksheet
Set wks = Sheets("Sheet3")

Dim cb As OLEObject, i As Integer

'determine how many boxes are already there and get count of cell to paste to
i = 7
For Each cb In wks.OLEObjects
    If InStr(1, cb.Name, "CheckBox") Then i = i + 5
Next

'paste new checkbox
Sheets("sheet3").Range("V" & i).PasteSpecial

End Sub

所有答案都将第一个复选框放在同一单元格中,但下一个复选框将其再次放在与之前相同的单元格中。我不知道这是否有问题,但我使用的是excel 2010。

我可能对此有错,但是,如果工作簿关闭然后重新打开,lRow将重置为0,因此计数器将重新开始,并将复选框粘贴在彼此的顶部(如果已经存在)。这是真的。OP没有说明每次打开工作簿时都需要从底部开始。如果是这样,他可以找到最后一个并使用它。
Private Sub CommandButton2_Click()

' copy checkbox
Sheets("sheet2").OLEObjects("CheckBox1").Copy

Dim wks As Worksheet
Set wks = Sheets("Sheet3")

Dim cb As OLEObject, i As Integer

'determine how many boxes are already there and get count of cell to paste to
i = 7
For Each cb In wks.OLEObjects
    If InStr(1, cb.Name, "CheckBox") Then i = i + 5
Next

'paste new checkbox
Sheets("sheet3").Range("V" & i).PasteSpecial

End Sub