我在Windows 7上的Excel 2010中制作并测试了这个宏,也使用另一台Windows 7计算机但使用Excel 2007进行了测试。同时使用它们,但是当我尝试在我的工作计算机上使用它时(Windows 7,Excel 2007)我在第一个“Next”语句中得到“类型不匹配错误”。查找并发现我可以使用“退出”而不是“下一步”,但它只是抱怨下一行包含“结束如果”。现在它声称“结束如果没有阻止如果”。我想我无法理解这是如何在一台Win7 \ Excel 2007计算机上运行而不是另一台计算机。
宏只是在电子邮件主题中搜索所选单元格的值(如果单元格尚未着色),如果匹配,则会更改单元格的颜色。
Sub MultipleCellSubjectSearch()
'This macro searches for the selected cell values (if there is no cell color), when it finds a match it turns the cell color yellow
Dim olApp As Outlook.Application
Dim olNamespace As Outlook.Namespace
Dim olItem As MailItem
Dim olInbox As Outlook.MAPIFolder
Dim olFolder As Outlook.MAPIFolder
Dim oCell As Range
'The following sets the Outlook folder to search
Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace("MAPI")
Set olInbox = olNamespace.GetDefaultFolder(olFolderInbox)
'The following searches for cell value string in subject
For Each oCell In Selection
If oCell.Interior.Pattern = xlNone Then
For Each olItem In olInbox.Items
If InStr(olItem.Subject, (oCell.Value)) <> 0 Then
oCell.Interior.ColorIndex = 6
End If
Next
End If
Next
Set olInbox = Nothing
Set olNamespace = Nothing
Set olApp = Nothing
End Sub
如果有人有任何想法,我们将不胜感激。
答案 0 :(得分:3)
以下是一个想法 - 您的olItem
被定义为mailItem
。当邮箱中的下一个项目不是邮件项目时,代码可能会失败?日历请求或其他原因会导致这种情况吗?您可能希望在内部循环中放置一个Debug.Print语句,以查看正在查看的对象 - 并查看循环是否确实执行,直到它遇到收件箱中的奇怪项目...
作为快速修复,如果您允许它成为变体,则不会出现类型错误。所以你只需将其声明为
Dim olItem
没有as mailItem
这是一个很长的镜头。