将工作表的选中项粘贴到VBA Excel中另一工作表的彩色单元格

将工作表的选中项粘贴到VBA Excel中另一工作表的彩色单元格,excel,vba,Excel,Vba,我有一个VBA Excel程序,当选中工作表1的下一个单元格中的复选框时,可以将单元格值复制到另一个工作表的彩色单元格中。 现在我的问题是: 1.选中相应行的复选框时,复制上述单元格的值。(例如,选中21否复选框时,复制值20) 2.当它到达未着色的单元格时,它粘贴一个值并移动到下一行 Sub executeCheckBoxes() Dim src As Worksheet Dim tgt As Worksheet Dim chkbx As CheckBox

我有一个VBA Excel程序,当选中工作表1的下一个单元格中的复选框时,可以将单元格值复制到另一个工作表的彩色单元格中。 现在我的问题是: 1.选中相应行的复选框时,复制上述单元格的值。(例如,选中21否复选框时,复制值20) 2.当它到达未着色的单元格时,它粘贴一个值并移动到下一行

  Sub executeCheckBoxes()


    Dim src As Worksheet
    Dim tgt As Worksheet
    Dim chkbx As CheckBox
    Dim i As Long

    Set src = ThisWorkbook.Worksheets("Sheet1")
    Set tgt = ThisWorkbook.Worksheets("Sheet2")
    srcLR = src.Cells(src.Rows.Count, 1).End(xlUp).Row
    tgtER = tgt.Cells(tgt.Rows.Count, 1).Row + 1
    i = 4
    j = 1
    For Each chkbx In src.CheckBoxes
        If chkbx.Value = xlOn Then
        tgt.Cells(i, j).Value = _
            src.Cells(chkbx.TopLeftCell.Row, 1).Value
        tgt.Activate
            If tgt.Cells(i, j).Interior.ColorIndex <> 0 Then
            'tgt.Cells(i, j).Select
             Debug.Print chkbx.Name
             j = j + 1

            Else
             i = i + 1
             j = 1
            End If

         End If
      Next chkbx

End Sub
Sub-executecheckbox()
Dim src As工作表
将tgt设置为工作表
将chkbx变暗为复选框
我想我会坚持多久
Set src=ThisWorkbook.Worksheets(“Sheet1”)
设置tgt=ThisWorkbook.Worksheets(“Sheet2”)
srcLR=src.Cells(src.Rows.Count,1).End(xlUp).Row
tgtER=tgt.Cells(tgt.Rows.Count,1).Row+1
i=4
j=1
对于src.checkbox中的每个chkbx
如果chkbx.Value=xlOn,则
tgt.单元格(i,j).值=_
src.Cells(chkbx.TopLeftCell.Row,1).Value
激活
如果tgt.Cells(i,j).Interior.ColorIndex为0,则
'tgt.Cells(i,j).选择
Debug.Print chkbx.Name
j=j+1
其他的
i=i+1
j=1
如果结束
如果结束
下一个chkbx
端接头
这是我的第二张照片:

我在“表1”中有1到278个数字以及各个复选框。但我希望它们从左到右复制,并且根据所选单元格值在彩色单元格中排列

这是我的工作表1:

任何帮助都将不胜感激

Function Filled(MyCell As Range)
If MyCell.Interior.ColorIndex > 0 Then
    Result = 1
Else
    Result = ""
End If
Filled = Result
End Function
此代码取自一次讨论

使用此函数,您可以编写一个
while
循环,该循环从单元格
1,1
开始,然后水平运行,直到到达一个没有颜色的单元格。然后它将转到下一行。如果它转到下一行,而该单元格没有颜色,则您可以退出while循环并发送一条消息,说明“单元格用完了”“或者类似的


这假设彩色单元格的颜色完全相同。此外,它还假设行中没有颜色中断(即一个连续的颜色块)。

嗨,ian.currie,很抱歉回复太晚。我是VBA Excel的新手。那么,你能告诉我如何在我的代码中使用这个吗?嗨,伊恩·柯里,根据你的想法,我修改了代码。但我仍然面临一些问题,你能帮我吗?非常感谢。