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

问题描述 投票:0回答:1

我正在尝试使用Excel作为珠宝订单。

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

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

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

  1. 删除Sheet1中的行19:150这将清除可能显示的任何先前的石头细节。
  2. 在Sheet1中查找单元格C13中的值此值将用于确定应粘贴/显示的行数
  3. 复制行,范围A2:D2中的Sheet2这是模板行数据,其中行中的每个单元格都是自己的下拉列表。
  4. 在Sheet1中的B19中粘贴行这是粘贴到订单表单中的模板行。

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

例如,如果上面步骤2中的值为“3”,那么石头细节行将需要在订单中粘贴3次。

我能得到的最远的是创建控制按钮和删除子句......

Private Sub CommandButton1_Click()
Sub deleteMultipleRows()
Rows("19:150").Delete
End Sub
excel vba excel-vba
1个回答
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.告诉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
© www.soinside.com 2019 - 2024. All rights reserved.