【问题标题】:Need to copy/paste row (x number of times) when cell value equals X当单元格值等于 X 时需要复制/粘贴行(x 次)
【发布时间】:2018-04-09 19:34:11
【问题描述】:

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

在订单表 (sheet1) 中,用户可以从格式化为下拉列表的单元格中选择一个数字,该数字表示一件珠宝中的宝石数量。例如,如果戒指中有 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 次石头详情行。

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

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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    对于删除语句,您可能应该使用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. 命令可以组合使用(并且应该在大多数情况下)。在 .Row(2) 之前添加的 Sheet1. 告诉 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
    

    【讨论】:

      猜你喜欢
      • 2014-12-27
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      相关资源
      最近更新 更多