Excel.Range.Find使用长度超过255个字符的string

我正在存储Excel中每个1023个字符的string。 稍后,我需要能够searchexcel文件,并find一个值是什么行。我可以保证,我正在寻找的string恰好有一处出现在工作簿中的某处。

目前,我每次尝试search都会遇到types不匹配错误(由于find函数的长度限制为255)。 当我用像“teststring”这样短的东西replace我的searchstring,它工作正常。 如何在Excel中search1023个字符的string?

foreach (string missingItem in missingItems) { Range currentFind = null; foreach (Worksheet searchSheet in oWB.Worksheets) { Range lookAtRange = (Range)searchSheet.get_Range ("A1", "F20"); currentFind = lookAtRange.Find ( missingItem, Missing.Value, XlFindLookIn.xlValues, Missing.Value, Missing.Value, XlSearchDirection.xlNext, false, false, Missing.Value); if (currentFind != null) { Range deleteRow = (Range)searchSheet.Rows[currentFind.Row]; deleteRow.Delete (XlDirection.xlUp); break; } } } 

http://www.vbaexpress.com/forum/archive/index.php/t-9179.html

简而言之,如果所有string对于前255个字符都是唯一的,则不必担心其余字符。

在执行查找之前,您只需要截断string:

 missingItem = Left(missingItem,255) 

或者可选地:

 missingItem = Right (missingItem,255) 

否则,如果前255个字符有很多重复项,则可以将string除以255 – 然后将原始string拆分为单独的string,单独search它们 – 是否可以帮助您?

编辑:

另外,这里是你如何检查一个string的等效性为每个单元格在一个范围内: http ://www.vbaexpress.com/kb/getarticle.php?kb_id=167

 Sub FindIt() Dim Cell As Range Dim SearchString As String For Each Cell In Range("A1:D500") If Cell.Value = "dqwlokjdowqijowqijdoinowiqhdoiwqiophiruegnqpiunrgpiuqgnrgkjffndskfiougpiodghiudhfgtothisansdfldkjflsdffjlksdjflksjfdoiejwfoiwjeoinfoinewoifjwoiejfoiwejfoiwejfoijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjwerkjwelkfjwelkjflkwejlfkjwelkjflwkjeflknweoifnoweinfoinewfoinoifwnwoienfoinweoddddddddddddddddddddddddddddddddddddddddfinwoioiefldkjsfoijoneiojfoijfewwefweeeeeeeeeeeefwef" Then '<< use "Like" for wildcards in If-Then statements MsgBox "An ''it'' was found at " & Cell.Address & " (" & Cell & ")" End If Next Cell End Sub 

搞笑搜索字符串

是的,我确实假装把它当作我老板走过的那样重要的东西。 我不认为他被愚弄了,因为我只是把它弄糊涂在键盘上。