将工作表的选中项粘贴到VBA Excel中另一工作表的彩色单元格
我有一个VBA Excel程序,当选中工作表1的下一个单元格中的复选框时,可以将单元格值复制到另一个工作表的彩色单元格中。 现在我的问题是: 1.选中相应行的复选框时,复制上述单元格的值。(例如,选中21否复选框时,复制值20) 2.当它到达未着色的单元格时,它粘贴一个值并移动到下一行将工作表的选中项粘贴到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
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的新手。那么,你能告诉我如何在我的代码中使用这个吗?嗨,伊恩·柯里,根据你的想法,我修改了代码。但我仍然面临一些问题,你能帮我吗?非常感谢。