我寫了一個宏,它將在excel文件的所有表格中搜索字符串。該宏將激活第一個工作表以及包含搜索字符串的工作表中的單元格。如果沒有找到,它會顯示一條消息。這個宏運行良好。我想擴展這個功能來覆蓋包含這個字符串而不是第一個的所有表單。所以我修改了宏,但沒有按預期工作。我已經給出了下面的代碼,並在它顯示錯誤的地方發表了評論。使用宏在excel文件的所有表格中搜索字符串
Dim sheetCount As Integer Dim datatoFind Sub Button1_Click() Find_Data End Sub Private Sub Find_Data() Dim counter As Integer Dim currentSheet As Integer Dim notFound As Boolean Dim yesNo As String notFound = True On Error Resume Next currentSheet = ActiveSheet.Index datatoFind = InputBox("Please enter the value to search for") If datatoFind = "" Then Exit Sub sheetCount = ActiveWorkbook.Sheets.Count If IsError(CDbl(datatoFind)) = False Then datatoFind = CDbl(datatoFind) For counter = 1 To sheetCount Sheets(counter).Activate Cells.Find(What:=datatoFind, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Activate If InStr(1, ActiveCell.Value, datatoFind) Then If HasMoreValues(counter + 1) Then 'Not completing the method and directly entering yesNo = MsgBox("Do you want to continue search?", vbYesNo) If yesNo = vbNo Then notFound = False Exit For End If End If Sheets(counter).Activate End If Next counter If notFound Then MsgBox ("Value not found") Sheets(currentSheet).Activate End If End Sub Private Function HasMoreValues(ByVal sheetCounter As Integer) As Boolean HasMoreValues = False Dim str As String For counter = sheetCounter To sheetCount Sheets(counter).Activate str = Cells.Find(What:=datatoFind, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Value 'Not going further than this i.e. following code is not executed If InStr(1, str, datatoFind) Then HasMoreValues = True Exit For End If Next counter End Function
很抱歉,但你的代碼有一些矛盾和我無法弄清楚你正在嘗試做什麼。請描述您的程序在工作表中存在多個匹配項時應該執行的操作。順便說一下,看看FindNext方法 – 2011-01-19 13:48:15
我的代碼執行以下操作:1.搜索所有工作表中的第一個可用匹配項。如果找到,它將激活工作表和存在搜索字符串的單元格。 2.搜索下一個可用匹配。如果存在,則顯示msgbox,並且是/否表示存在更多搜索。你想繼續嗎?如果是,則下一個可用比賽如第1點所述顯示,然後搜索下一個可用比賽,直到所有比賽用盡。 3.如果沒有可用的匹配,則該過程停止。其方法是FindNext,「Cells」還是「Sheets」? – samar 2011-01-20 06:48:16