首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >循环遍历和复制/粘贴行

循环遍历和复制/粘贴行
EN

Stack Overflow用户
提问于 2018-07-28 18:37:32
回答 3查看 4.2K关注 0票数 1

我希望用xl VBA编写一个简单的宏,它循环通过单元格A1:A100和;

  1. 查找每个值为“HT”的单元格
  2. 复制该单元格的整个行
  3. 选择工作表“记录”-移动到列A的底部-粘贴复制的HT

这是我的尝试-我正在努力让它工作,并一直在谷歌各种不同的方法,但似乎不能工作!

私有子CopyRow()

代码语言:javascript
复制
Dim i As Range
Sheets("Input").Select
Range("A1").Select

For Each i In Sheet9.Range("A2:A1000")
    Select Case i.Value
        Case "HT"
            Rows(ActiveCell.Row).Copy
            Sheets("Records").Select
            Range("A2").End(xlDown).PasteSpecial xlPasteValues
            Sheets("Input").Select

            Case Else

        End Select

    Next i

感谢您能给我的任何帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-28 23:02:48

您的问题出在“ActiveCell.Row”中,这里的活动单元格不是环路电流单元格,因此您可以使用“i.Row”。

但您也可以避免所有这些选择/激活,而使用完全限定的范围引用:

代码语言:javascript
复制
Private Sub CopyRow()

    Dim i As Range

    With Sheets("Records") ‘reference target sheet
        For Each i In Sheet9.Range("A2:A1000") ‘loop through Sheet9 "A2:A1000" cells
            If i.Value2 = "HT" Then
                i.EntireRow.Copy
                .Cells(.Rows.Count,"A").End(xlUp).Offset(1,0).PasteSpecial xlPasteValues ‘ all “dots” are making following members/object referencing the object referenced in “With...” 
            End If
        Next
    End With
End Sub
票数 0
EN

Stack Overflow用户

发布于 2018-07-28 19:30:22

我假设数据在“输入”工作表中,结果必须放入“记录”工作表中。从你的解释中我不知道"Sheet9“工作表的意义是什么。

这是一段快速的代码,它可以实现您想要的功能:

代码语言:javascript
复制
Sub copy_HT_rows()

    Dim rng As Range
    Sheets("Input").Select
    Range("A1").Select

    For Each rng In Sheets("input").Range("A1:A100")
        If rng.Value = "HT" Then
            Rows(rng.Row).Copy
            Sheets("Records").Select
            If (Range("A1") <> "") Then
                Range("A10000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
            Else
                Range("A1").PasteSpecial xlPasteValues
            End If
            Sheets("Input").Select
        End If
    Next rng
End Sub
票数 1
EN

Stack Overflow用户

发布于 2018-07-29 01:40:32

使用自动筛选

代码语言:javascript
复制
Option Explicit
Public Sub test()
    Dim rng As Range
    Set rng = ThisWorkbook.Worksheets("Sheet9").Range("A1:A1000") '<include header
    If Application.WorksheetFunction.CountIf(rng, "HT") = 0 Then Exit Sub
    rng.AutoFilter
    rng.AutoFilter 1, "HT"

    With ThisWorkbook.Worksheets("Records")
          rng.Offset(1).Resize(rng.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy .Range("A" & .Cells(.Rows.Count, "A").End(xlUp).Row + 1)
    End With
    rng.AutoFilter
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51570511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档