运行以下代码的第一行后,Excel 会更改用户界面中的“匹配整个单元格内容”设置。结果是,下次用户按下Ctrl+F 时,将在整个单元格内容中进行搜索。我不喜欢改变影响用户体验的设置的 VBA 宏,所以我总是执行第二行,它执行另一个搜索并将匹配整个单元格内容设置回其默认值。
'execute the find and changes the entire cell content setting
Set C = MyRange.Find(SomeText, LookAt:=xlWhole)
'put the setting back to the default value (not the previous value)
MyRange.SomeText ParName, LookAt:=xlPart
Run Code Online (Sandbox Code Playgroud)
问题是它将它设置回默认值,而不是用户最后设置的值。
我宁愿有类似的东西:
'store the current entire cell content setting
OldLookAt = Application.FindLookAt
'execute the find
Set C = MyRange.Find(SomeText, LookAt:=xlWhole)
'restore the original setting
Application.FindLookAt = OldLookAt
Run Code Online (Sandbox Code Playgroud)
我编的,Application.FindLookAt因为我找不到它。
有没有办法在Range.Find不影响用户体验的情况下做某事?
我花了相当多的时间查看 Excel 对象库和 MSDN 文档,但似乎无法检索。
不幸的是,如果您不将该参数包含为默认值,Excel 看起来实际上会覆盖并设置您的用户设置。
Private Sub testXLLookAT()
'Setup fake falues
Dim mCurLookup As XlLookAt
Range("A1").value = "Test1"
Range("A2").value = "Test"
'get current setting, but this doesn't work as it defaults...
If Range("A1:A2").Find("Test").Address = "A1" Then
mCurLookup = xlPart
Else
mCurLookup = xlWhole
End If
'your find here
'note - mCurLookup always becomes xlWhole...
Range("A1:A2").Find What:="Test", LookAt:=mCurLookup
End Sub
Run Code Online (Sandbox Code Playgroud)
否则,上面的代码可以工作 - 但它不会,因为即使不包含默认值,它也会被覆盖。
| 归档时间: |
|
| 查看次数: |
14458 次 |
| 最近记录: |