我对vba很陌生,下面的很多代码都是在网上找到的。
Option Compare Text
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngCell As Range
Dim rngRange As Range
Dim strLookFor As String
Dim arrChar As Variant
Dim lngCounter As Long
Set activeTable = ActiveSheet.ListObjects("Table1")
activeTable.Range.AutoFilter Field:=10, Criteria1:="*" & [J3] & "*", Operator:=xlFilterValues
Set rRng = ActiveSheet.Range("J3")
If IsEmpty(rRng.Value) Then
activeTable.AutoFilter.ShowAllData
activeTable.ListColumns(10).Range.Font.Color = vbBlack
Else
Call Highlight_words
End If
End Sub
Private Sub Highlight_words()
Set rngRange = Range("J7:J" & Cells(Rows.Count, "J").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
rngRange.Font.Color = vbBlue
strLookFor = Range("J3").Value
Application.EnableEvents = False
For Each rngCell In rngRange
For lngCounter = 1 To Len(rngCell) - Len(strLookFor) + 1
If Mid(rngCell, lngCounter, Len(strLookFor)) = strLookFor Then
rngCell.Characters(lngCounter, Len(strLookFor)).Font.Color = vbRed
End If
Next lngCounter
Next rngCell
Application.EnableEvents = True
End Sub
虽然代码似乎在我的工作表中工作,但每次我尝试将其保存在“桌面>文件名”(作为 XLSM 文件)中时,都会出现以下错误:
保存“文件名”时检测到错误。 Microsoft Excel 或许能够通过删除或修复某些功能来保存文件。要在新文件中进行修复,请单击继续。要取消保存文件,请单击取消。
我注意到,如果我取消隐藏 for 循环,它只会给我错误。所以我想知道 for 循环出了什么问题?
尝试以 XLSM 格式保存文件时,您可能会看到由于 VBA 代码或其与 Excel 功能交互方式而导致的错误。
根据我从您的代码中了解到的内容,我想强调以下几点。
这是我在谷歌上找到的一些参考资料- https://www.reddit.com/r/excel/comments/ld6hye/learn_to_fix_errors_were_Detected_while_ saving/ https://learn.microsoft.com/en-us/answers/questions/53015/microsoft-should-fix-errors-were-Detected-while-sa?source=docs