【发布时间】:2019-10-14 03:14:27
【问题描述】:
我正在尝试根据 J 列中出现的单词“是”来选择表中的行。
我有一个从 A 列到 J 列的表格,我想选择 J 列中有“是”的行,然后只将这些行粘贴到新工作表中。
选择后,我需要将这些行复制到新的工作表或 Word 文档中。
我尝试了一系列论坛,这是针对 Windows MS Excel 软件的,使用 VBA 宏。
我正在使用以下 VBA,但遇到问题:
Sub Macro1()
Dim rngJ As Range
Dim cell As Range
Set rngJ = Range("J1", Range("J65536").End(xlUp))
Set wsNew = ThisWorkbook.Worksheets.Add
For Each cell In rngJ
If cell.Value = "Yes" Then
cell.EntireRow.Copy
wsNew.Sheets("Sheet1").Range("J65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
End If
Next cell
End Sub
任何帮助将不胜感激!
【问题讨论】:
-
有问题 - 什么问题?如果这是您得到的错误消息,或者如果您的代码运行完成,则发布预期和实际结果。
-
wsNew是一个工作表。当您执行wsNew.Sheets("Sheet1")...? 时,您可能会遇到错误?我认为你只想做wsNew.Range("J66536").End(xlUp).Offset(1,0).Paste? -
@BruceWayne - 同意,但我认为粘贴从 J 开始的整行也可能会导致错误?
-
注意:不要硬编码最后一个单元格。最近的 Excel 版本有超过 65536 行使用
Range("J" & Rows.Count)代替。 • 您可能会从阅读How to avoid using Select in Excel VBA 中受益。 -
嗨@jsheeran,感谢您这么快回复我!我的错误消息是“运行时错误 438,对象不支持此属性或方法”。这发生在 wsNew.Sheets 行中