使用命令按钮将复选框复制到每 5 个单元格
Copy Check Box to Every 5th Cell with Command Button
我有一个问题,我无法 solve.I 编写此代码:
Private Sub CommandButton2_Click()
Sheets("sheet2").OLEObjects("CheckBox1").Copy
Sheets("sheet3").Range("V7").PasteSpecial
End Sub
此代码从 (sheet 2) 到 (sheet 3) 从 V7 单元格开始复制一个复选框。现在我希望下次按下命令按钮时将数据粘贴到单元格 V12,下次粘贴到 V17 等。如您所见,我的 vba 知识不是很好。
我不知道你在 Sheet(3).Range("V7") 和 Sheet(3).Range("V12")
但是在你使用 PasteSpecial 之前,你应该跟踪最后一次将数据粘贴到 Sheets("sheets3") 中的特定单元格中的位置 Sheet( "sheets3"), 例如: Sheets("Sheet3").Range("A1")
然后您就可以像这样将特殊内容粘贴到第 5 行下面的单元格中:
Sheets("sheet3").Range(Sheets("Sheets3").Range("A1").Offset(5,0) )。特殊粘贴
之后你更新 Sheets("Sheets3").Range("A1") = Sheets("sheet3").Range(Sheet s("Sheets3").范围("A1").偏移量(5,0)).地址
所以这应该可以完成工作:
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
使用全局变量。这些必须位于 sheet、模块或表单代码的顶部,高于所有子项和函数。
然后将其用作您范围内的行号。 Range("V" & lRow)
Private lRow As Long
Private Sub CommandButton2_Click()
'Let's check if this is the first time the button has been used.
If lRow = 0 then
lRow = 7
Else
'Increment the row from the one we wrote to last time.
lRow = lRow + 5
End If
'Do the copy
Sheets("sheet2").OLEObjects("CheckBox1").Copy
Sheets("sheet3").Range("V" & lRow).PasteSpecial
End Sub
此代码将查看您要粘贴到的 sheet 中已有多少个复选框,并为每个复选框添加 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
所有答案都将第一个复选框放在第一个复选框,但下一个将其再次放在与 before.I 相同的单元格中不知道是否重要,但我使用 excel 2010.
我有一个问题,我无法 solve.I 编写此代码:
Private Sub CommandButton2_Click()
Sheets("sheet2").OLEObjects("CheckBox1").Copy
Sheets("sheet3").Range("V7").PasteSpecial
End Sub
此代码从 (sheet 2) 到 (sheet 3) 从 V7 单元格开始复制一个复选框。现在我希望下次按下命令按钮时将数据粘贴到单元格 V12,下次粘贴到 V17 等。如您所见,我的 vba 知识不是很好。
我不知道你在 Sheet(3).Range("V7") 和 Sheet(3).Range("V12")
但是在你使用 PasteSpecial 之前,你应该跟踪最后一次将数据粘贴到 Sheets("sheets3") 中的特定单元格中的位置 Sheet( "sheets3"), 例如: Sheets("Sheet3").Range("A1")
然后您就可以像这样将特殊内容粘贴到第 5 行下面的单元格中:
Sheets("sheet3").Range(Sheets("Sheets3").Range("A1").Offset(5,0) )。特殊粘贴 之后你更新 Sheets("Sheets3").Range("A1") = Sheets("sheet3").Range(Sheet s("Sheets3").范围("A1").偏移量(5,0)).地址
所以这应该可以完成工作:
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
使用全局变量。这些必须位于 sheet、模块或表单代码的顶部,高于所有子项和函数。
然后将其用作您范围内的行号。 Range("V" & lRow)
Private lRow As Long
Private Sub CommandButton2_Click()
'Let's check if this is the first time the button has been used.
If lRow = 0 then
lRow = 7
Else
'Increment the row from the one we wrote to last time.
lRow = lRow + 5
End If
'Do the copy
Sheets("sheet2").OLEObjects("CheckBox1").Copy
Sheets("sheet3").Range("V" & lRow).PasteSpecial
End Sub
此代码将查看您要粘贴到的 sheet 中已有多少个复选框,并为每个复选框添加 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
所有答案都将第一个复选框放在第一个复选框,但下一个将其再次放在与 before.I 相同的单元格中不知道是否重要,但我使用 excel 2010.