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

时间:2015-10-05 13:17:37

标签: excel-vba checkbox copy-paste vba excel

我有一个我无法解决的问题。我写了这段代码:

Private Sub CommandButton2_Click()

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

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

End Sub

此代码从V7单元格开始复制(第2页)到(第3页)的复选框。现在我希望下次按下命令按钮将数据粘贴到单元格V12,下一次粘贴到V17等。我的vba知识不是很好,你可以看到。

4 个答案:

答案 0 :(得分:0)

我不知道你在Sheet(3).Range(“V7”)和Sheet(3)之间得到了什么数据.Range(“V12”)

但是在你是PasteSpecial之前,你应该跟踪最后一次在Sheet(“sheets3”)中的特定单元格中的Sheets(“sheets3”)中粘贴数据的位置,例如:Sheets(“Sheet3”) ).Range( “A1”)

然后你就可以在这样的5行下粘贴到这个单元格:

表( “表Sheet 3”)。范围(表( “Sheets3”)。范围( “A1”)。偏移(5,0))。PasteSpecial的 之后你更新表格(“表3”)。范围(“A1”)=表格(“表3”)。范围(表格(“表3”)。范围(“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

答案 1 :(得分:0)

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

然后将其用作范围内的行号。 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

答案 2 :(得分:0)

此代码将显示您要粘贴的工作表中已有多少个复选框,并为每个复选框添加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

答案 3 :(得分:0)

所有答案都放在第一个复选框,但下一个复选框再次放到同一个单元格中。我不知道它是否有问题,但我使用excel 2010。