【发布时间】:2016-07-10 23:26:50
【问题描述】:
如果有人能帮助我解决我遇到的这个问题,我将不胜感激。基本上,VBA 是一种搜索功能,使用户能够从工作数据库中搜索工作的部分或全部名称。
但是,它会导致“运行时错误 7:内存不足”。这仅发生在我的 Macbook 上,不会发生在 Windows 计算机上。单击“调试”后,它把我带到了这行代码:
`If scd.Cells(i, j) Like "*" & Search & "*" Then
请帮忙!谢谢!
其余代码如下:
Option Compare Text
Sub SearchClientRecord()
Dim Search As String
Dim Finalrow As Integer
Dim SearchFinalRow As Integer
Dim i As Integer
Dim scs As Worksheet
Dim scd As Worksheet
Set scs = Sheets("Client Search")
Set scd = Sheets("Client Database")
scs.Range("C19:S1018").ClearContents
Search = scs.Range("C12")
Finalrow = scd.Range("D100000").End(xlUp).Row
SearchFinalRow = scs.Range("D100000").End(xlUp).Row
For j = 3 To 19
For i = 19 To Finalrow
If scd.Cells(i, j) Like "*" & Search & "*" Then
scd.Range(scd.Cells(i, 3), scd.Cells(i, 19)).Copy
scs.Range("C100000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats
End If
Next i
Next j
scs.Range("C19:S1018").Select
scs.Range("$C$18:$S$1009").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6 _
, 7), Header:=xlYes
Call Border
Columns("C:S").HorizontalAlignment = xlCenter
End Sub
【问题讨论】:
-
您是否考虑过使用
.Find和.FindNext方法?它比循环更有效。请参阅here 了解良好示例 -
如果你使用
If instr(scd.Cells(i, j).value,Search)>0 Then而不是If scd.Cells(i, j) Like "*" & Search & "*" Then?