当单元格值等于X时,需要复制/粘贴行(x次)

时间:2018-04-09 19:34:11

标签: excel vba excel-vba

我试图使用Excel作为珠宝订单。

在订购单(sheet1)中,用户可以从格式化为下拉列表的单元格中选择一个数字,该数字表示一件珠宝中的宝石数量。例如,如果一个环中有10个宝石,则用户从下拉列表中选择10个。

需要在订单表格(Sheet1)中捕获10个宝石中每个宝石的详细信息。例如,每个石头将有4个数据元素......石头类型,重量,颜色,切割...所以我创建了所需的格式化数据行(在Sheet2中),其中每个单元格是用户的下拉列表选择。

我想创建一个控制按钮来执行以下操作:

  1. 删除Sheet1中的行19:150 这将清除可能显示的任何先前的石头细节。

  2. 在Sheet1中查找单元格C13中的值 该值将用于确定应粘贴/显示的行数

  3. 在Sheet2中复制行,范围A2:D2 这是模板行数据,其中行中的每个单元格都是自己的下拉列表。

  4. 在Sheet1中的B19中粘贴行 这是粘贴到订单表单中的模板行。

  5. 4a)粘贴与上面步骤(2)中的值一样多的行。

    例如,如果上面步骤2中的值是" 3",则需要在订单表格中粘贴石头详细信息行3次。

    我能够获得的最远的是创建控制按钮和删除条款......

    Private Sub CommandButton1_Click()
    Sub deleteMultipleRows()
    Rows("19:150").Delete
    End Sub
    

1 个答案:

答案 0 :(得分:0)

对于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命令,并且可以组合.SelectSelection.命令(并且应该在大多数情况下)。 Sheet1.之前添加的.Row(2)告诉Excel专门使用Sheet1中的第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