用户自定义命令button,基于checkbox复制True / False
嗨,我是新的Excel VBA,我被困在下面的问题,
我的工作簿有sheet1 = Chandler_Endorsements(包含启动UserForm1的button)。 我的用户窗体有26个checkbox和2个CommandButton(复制和复位)。
每个checkbox都与工作簿中工作表2中的单元格相关联。 每个后续单元格都有一个值,例如。 ABc,XYz等以特定的格式。
我的目标是让用户检查他们想要select的每个项目的checkbox,然后select“复制”(CommandButton1),然后他们可以粘贴这些文件。 例如。 如果他们选中了checkbox1和2,则与这些checkbox关联的单元格将被选中并复制,然后粘贴到单词文件上。
另外,如果checkbox稍后由用户在该单元之间取消select并被复制。
我用下面的代码给每个checkbox赋值:
Private Sub CheckBox1_Click() CheckBox1.Caption = Range("A3").Value End Sub Private Sub CheckBox10_Click() CheckBox10.Caption = Range("A14").Value End Sub
而且,为了处理相关的细胞,我使用下面的代码:
If CheckBox1.Value = True Then ActiveSheet.Range("A3").Copy Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Else: CheckBox1.Value = False End If If CheckBox2.Value = True Then ActiveSheet.Range("A4").Copy Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Else: CheckBox2.Value = False End If
但通过使用上面的代码,它不是应付我select的每个细胞(在checkbox中选中)。 请帮助我正确的代码。
这里有一个build议来做一个不同的方式:
- 此代码逐步通过
UserForm
每个Control
- 检查它是否是
CheckBox
- validation它的
.Value = True
- 它将数据存储到
String
- 将
CheckBox.Value
设置为False
- 将
String
数据传送到剪贴板
Option Explicit
Sub TestRun() Dim cCont As Control Dim StrCopy As String Dim IntI As Long Dim Mydata As New DataObject IntI = 1 For Each cCont In UserForm1.Controls If TypeName(cCont) = "CheckBox" Then If cCont.Value = True Then StrCopy = StrCopy & Chr(10) & ActiveSheet.Range("B" & IntI).Value cCont.Value = False End If IntI = IntI + 1 End If Next cCont Mydata.SetText StrCopy Mydata.PutInClipboard End Sub
试试这个…您可以应用自动打开,而不是单击表1中的CommandButton。
检查并logging用户同时select和复制单元格的checkbox。 然后,用户可以手动粘贴到word文件。
Sub auto_open() UserForm1.Show Call Copy End Sub Sub Copy() Dim SelectRange as String SelectRange = "" If UserForm1.CheckBox1.Value = True Then SelectRange = SelectRange + "," + "A3" End If If UserForm1.CheckBox2.Value = True Then SelectRange = SelectRange + "," + "A4" End If 'So AS, checkbox3,4,5....... If SelectRange <> "" Then SelectRange = Mid(SelectRange, 2, Len(SelectRange)) Sheets("sheet2").Range(SelectRange).Select Selection.copy End If UserForm1.CheckBox1.Value = False UserForm1.CheckBox2.Value = False 'So AS, checkbox3,4,5....... End Sub