【发布时间】:2013-09-20 01:31:05
【问题描述】:
我想设置一些代码来复制带有复选框的单元格
我有 30 个复选框
我复制了下面的代码并修改了 30 次
这无疑是多余的
每个复选框在一行,它将复制的数据在同一行
当复选框被点击时,下一个单元格中的行数据将被复制并移动到其他地方
这些数据将被转储到同一个工作表中的某处
我尝试创建 elseif 语句,不幸的是它们不起作用
If ThisWorkbook.Worksheets(1).Shapes("Check Box 2").OLEFormat.Object.Value = 1 Then
Range("f2").Select
Selection.Cut
Sheets("Sheet1").Select
Range("f15").Select
ActiveSheet.Paste
Range("f15").Select
Selection.Insert Shift:=xlDown
End If
End Sub
If ThisWorkbook.Worksheets(1).Shapes("Check Box 3").OLEFormat.Object.Value = 1 Then
Range("f3").Select
Selection.Cut
Sheets("Sheet1").Select
Range("f15").Select
ActiveSheet.Paste
Range("f15").Select
Selection.Insert Shift:=xlDown
End If
End Sub
If ThisWorkbook.Worksheets(1).Shapes("Check Box 4").OLEFormat.Object.Value = 1 Then
Range("f4").Select
Selection.Cut
Sheets("Sheet1").Select
Range("f15").Select
ActiveSheet.Paste
Range("f15").Select
Selection.Insert Shift:=xlDown
End If
End Sub
如您所见,这是非常重复的
关于如何编写此代码使其类似于嵌套 if 语句的任何建议
如果复选框 1 为真,请执行此操作 如果复选框 2 为真,请执行此操作 等等等等
[IMG]http://i44.tinypic.com/2db78dj.jpg[/IMG]
请指教谢谢
【问题讨论】:
-
复选框和它应该操作的单元格之间是什么关系?如果您可以描述这种关系,那么将其合并为几行代码就很容易,而不是 30 条
If/Else语句或Select Case语句。 -
复选框形状应该有一个 TopLeftCell 和一个 BottomRightCell 属性 - 这应该允许您计算出每个复选框位于哪一行。
-
抱歉,我似乎永远无法在这里以正确的格式复制和粘贴代码,它的第一块代码重复了 30 次,用于 30 个复选框,当单击复选框时,行数据将被复制并搬到别处
-
我对我的回答做了些许修改。看起来您的目的地永远不会改变,只有您需要剪切/粘贴的范围。同样,如果您可以描述与工作表结构相关的这些复选框的排列或提供屏幕截图等,这可能会进一步简化。否则,我只是与@987654326 中复选框的
.Name属性进行比较@块,并为每个复选框分配不同的cutRange。 -
嗨大卫,我添加了一个截图,感谢您的帮助。我只想将一些数据移动到工作表的另一部分。工作表非常慢,有 30 个宏 [IMG]i44.tinypic.com/2db78dj.jpg[/IMG]
标签: excel if-statement checkbox copy