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