繁体   English   中英

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

[英]Need to copy/paste row (x number of times) when cell value equals X

我正在尝试将Excel用于珠宝订购单。

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

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

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

  1. 删除工作表Sheet1中的19:150行,这将清除可能显示的所有先前的石头详细信息。

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

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

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

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

例如,如果步骤2中从上方开始的值为“ 3”,则石材详细信息行将需要在订单中粘贴3次。

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

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命令以及.SelectSelection.都可以忽略Selection. 命令可以组合(大多数情况下应如此)。 工作表1 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM