我希望在xl VBA中编写一个简单的宏,该宏循环通过单元格A1:A100和;
这是我的尝试-我一直在努力使它起作用,并一直在使用各种不同的方法进行搜索,但似乎无法成功!
私有子CopyRow()
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
感谢您能给我的任何帮助!
答案 0 :(得分:0)
我假设数据在“输入”工作表中,并且结果必须放入“记录”工作表中。我不知道您的解释对“ Sheet9”工作表的意义是什么。
这是一段简短的代码,可以满足您的需求:
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 :(得分:0)
您的问题是在“ ActiveCell.Row”中,活动单元不是我当前假设的循环当前单元,即“ i”,因此您可以使用“ i.Row”代替< / p>
但是您也可以避免所有选择/激活,而是使用完全合格的范围引用:
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
答案 2 :(得分:0)
使用自动过滤器
app.listen(PORT);