2

このマクロを Windows 7 上の Excel 2010 で作成してテストし、別の Windows 7 コンピューターでも Excel 2007 でテストしました。両方で動作しましたが、仕事用コンピューター (Windows 7、Excel 2007) で使用しようとすると、最初の「次へ」ステートメントで「タイプ不一致エラー」。調べたところ、「next」の代わりに「Exit For」を使用できることがわかりましたが、「End If」を含む次の行について不平を言うだけです。今度は、「ブロック If なしの End If」と主張します。これが 1 つの 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

誰かにアイデアがあれば、大歓迎です。

4

1 に答える 1

3

ここに考えがあります-あなたolItemはとして定義されていmailItemます。メールボックス内の次のアイテムがメールアイテムでない場合、コードが失敗する可能性がありますか?カレンダーリクエストまたは他の何かがこれを引き起こしますか?Debug.Printステートメントを内側のループに入れて、どのオブジェクトが調べられているかを確認し、受信トレイで奇妙なアイテムに遭遇するまでループが実際に実行されるかどうかを確認することをお勧めします...

簡単な修正として、バリアントとして許可した場合、タイプエラーは発生しません。だからあなたはそれを次のように宣言するでしょう

Dim olItem

なしでas mailItem

ロングショットです。

于 2013-02-15T05:53:48.817 に答える