【问题标题】:Select row for each worksheet with activecell为每个带有 activecell 的工作表选择行
【发布时间】:2019-08-26 20:38:02
【问题描述】:

我需要一个小循环来剪切一行并将其插入到每个工作表的第 2 行。 应仅通过选择第一列中的单个单元格来检测或选择整行。

我尝试为每个代码添加一个简单的(见下文),但它最终按日期对每一行进行排序。

Private Sub CommandButton2_Click()

For Each Worksheet In ThisWorkbook
    Rows(ActiveCell.Row).Cut
    Rows(2).Insert Shift:=xlDown
Next 
End Sub

只需选择一个单元格并按下第一个工作表中的命令按钮,它就应该将每个工作表中的整行移动到列表的顶部。

应仅通过选择第一列中的单个单元格来检测或选择整行。

如果有人还可以解释如何使用 Activevell 并循环遍历每个工作表,那也很好。

【问题讨论】:

  • 我不太清楚。要将行从一个工作表粘贴到多个工作表,还是要在所有工作表上剪切相同的行号并放入第二行?
  • 第二个建议伙伴。通过仅选择第一张工作表中的一个单元格来剪切所有工作表中相同的行号

标签: excel vba


【解决方案1】:

好吧,您尝试使用的最少代码如下所示:

Private Sub CommandButton2_Click()

For Each ws In ThisWorkbook.Sheets
    ws.Rows(ActiveCell.Row).Cut
    ws.Rows(2).Insert Shift:=xlDown
Next ws

End Sub

这将遍历sheets collection of the current workbook 中的所有元素(工作表)。 Activecell 是对当前显示在活动工作表上的焦点单元格的引用,该工作表是您按下命令按钮(假定)的位置,根据您的声明:

“它应该将每个工作表中的整行移动到列表的顶部只需选择一个单元格并按下第一个工作表中的命令按钮。”

【讨论】:

    【解决方案2】:

    我不是 For Each 循环的忠实粉丝,这就是为什么我只使用 for Next 循环 :)

    我觉得应该有用:)

    Private Sub CommandButton2_Click()
    
    Dim numb As Integer
    Dim i As Integer
    Dim pos As Integer
    
    numb = Application.Worksheets.Count
    
    For i = 1 To numb
    
        With Sheets(i)
            .Select
            pos = ActiveCell.Row
            .Rows(pos).Cut
            .Rows(2).Insert shift:=xlDown
        End With
    
    Next i
    
    End Sub
    

    如果您仍然需要最后一句话的答案,请添加评论,希望对您有所帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多