Я сделал и протестировал этот макрос в Excel 2010 на Windows 7, также протестировал его на другом компьютере под управлением Windows 7, но с Excel 2007. Работал на обоих, но когда я пытаюсь используйте его на моем рабочем компьютере (Windows 7, Excel 2007). Я получаю «ошибку несоответствия типа» при первом утверждении «Следующий». Посмотрел и обнаружил, что вместо «следующего» я мог бы использовать «Выход за», но потом он просто жалуется на следующую строку, содержащую «End If». Теперь он утверждает: «End If without block If». Наверное, я просто не понимаю, как это работает на одном компьютере Win7 \ Excel 2007, но не в другом.Excel vba macro получает ошибку несоответствия типа в 2007 году, но работает в 2010 году
Макрос просто ищет значения выбранных ячеек в объектах электронной почты (если ячейка еще не окрашена), если есть совпадение, это изменяет цвет ячейки.
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
Если у кого-то есть идеи, они были бы весьма признательны.
Возможно, вы используете другую версию Outlook на обеих машинах? Вы включаете правильные ссылки? Это скорее «проблема с окружающей средой», чем разница в Excel, я подозреваю ... – Floris
Кстати ... «Exit For» - отличный способ вырваться из цикла раньше, но вам все равно нужно иметь «регулярный» конец вашего цикла. Таким образом, это не случай «заменить' Next' на 'Exit For', но больше:' For ... do stuff ... если что-то выйдет за ... сделать больше вещей ... Далее'. ? – Floris
Обе машины Excel 2007 запускают Outlook 2007, на Windows 7 Pro. У меня есть те же самые ссылки, что и на обоих. Думаю, для более подробного изучения мне нужно найти способ заставить это работать на моем «корпоративном» компьютере. Я бы предположил, что это простое изменение, которое я могу сделать, что я не замечаю. – user2074189