我正在尝试使用Excel作为珠宝订单。
在订单表单(sheet1)中,用户可以从格式化为下拉列表的单元格中选择表示一件珠宝中的宝石数量的数字。例如,如果一个环中有10个宝石,则用户从下拉列表中选择10。
需要在订单表格(Sheet1)中捕获10个宝石中每个宝石的详细信息。例如,每个石头将有4个数据元素......石头类型,重量,颜色,切割...所以我创建了所需的格式化数据行(在Sheet2中),其中每个单元格是用户的下拉列表选择。
我想创建一个控制按钮来执行以下操作:
4a)粘贴与上面步骤(2)中的值一样多的行。
例如,如果上面步骤2中的值为“3”,那么石头细节行将需要在订单中粘贴3次。
我能得到的最远的是创建控制按钮和删除子句......
Private Sub CommandButton1_Click()
Sub deleteMultipleRows()
Rows("19:150").Delete
End Sub
对于delete语句,您应该使用Sheet1.Rows("19:150").Delete
,因为这将确保excel知道从哪个表中删除这些行。
您可以声明一个变量并为其赋值,如下所示:
Dim rowCount as Integer
rowCount = Sheet1.Range("C13")
如果您尝试为复制和粘贴录制宏,则应该看到一些示例代码。
注意:
如果结果如下所示:
Sheet1.Activate
Row(2).Select
Selection.Copy
你可以像这样组合这样的语句:
Sheet1.Row(2).Copy
由于大多数.Activate
命令都可以忽略,并且可以组合.Select
和Selection.
命令(并且应该在大多数情况下)。在Sheet1.
告诉Excel专门使用Sheet1中的第2行之前添加的.Row(2)
。没有限定符,即只是Row(2)
,Excel将使用当前活动的那张表中的第2行。
然后,您可以使用变量和工作表中的值来循环粘贴或复制/粘贴组合,如下所示:
Dim counter as integer
For counter = 1 to Sheet1.Range("C13")
'Add code for copy/paste here
Next counter
或者如果你声明并分配了rowCount
变量,你可以在这里使用它:
Dim counter as integer
For counter = 1 to rowCount
'Add code for copy/paste here
Next counter