2014-09-25 55 views
-2

我从包含调查反馈的数据库中导出大型电子表格,其中包含感兴趣的单词和短语,我希望对其进行排序和报告。我想要做的是使用宏来扫描整个工作表中的句子,然后只选择包含关键字的行。用于选择包含特定文本的行的宏

一些摸索(http://www.techpository.com/?page_id=1674)使我这个例子的代码,但它给了我在Excel 2007中的错误:

Sub SelectManyRows() 
Dim CatchPhrase As String 
Dim WholeRange As String 
Dim AnyCell As Object 
Dim RowsToSelect As String 

CatchPhrase = “future” 
'first undo any current highlighting 
Selection.SpecialCells(xlCellTypeLastCell).Select 
WholeRange = "A1:" & ActiveCell.Address 
Range(WholeRange).Select 
On Error Resume Next 'ignore errors 
For Each AnyCell In Selection 
If InStr(UCase$(AnyCell.Text), UCase$(CatchPhrase)) Then 
If RowsToSelect <> “” Then 
RowsToSelect = RowsToSelect & "," 'add group separator 
End If 
RowsToSelect = RowsToSelect & Trim$(Str$(AnyCell.Row)) & ":" & Trim$(Str$(AnyCell.Row)) 
End If 
Next 
On Error GoTo 0 'clear error ‘trap’ 
Range(RowsToSelect).Select 
End Sub 

我得到的错误是运行时“1004”方法“范围”对象'_Global'失败...有人可以帮我解决这个问题吗?

+0

vb.net是*不* VBA – Plutonix 2014-09-25 00:54:07

+0

THX @Plutonix(新手) – 2014-09-25 01:08:40

回答

0

可能正在由线产生的错误:

Range(WholeRange).Select 

Range(RowsToSelect).Select 

因为“范围”的对象不是一个只存在于自己的...它属于到“工作表”对象,因此假设所有这些都发生在活动工作表上(而不是背景中的另一个),请尝试将这些行修改为:

ActiveSheet.Range(WholeRange).Select 

ActiveSheet.Range(RowsToSelect).Select 

这应该清除您看到的错误,只要不是我已经错过了目测该代码的任何其他实例。当它抛出错误时,值得点击“调试”,以便您可以看到哪一行导致了它......尝试在进行这些更改之前和之后检查错误是否至少在移动!

使用范围的完整文档,here

HTH

相关问题