2011-06-09 143 views
1

我有下面的VBA代碼塊,它應該爲我的默認文件夾中的每個聯繫人創建一個帶有名字的彈出框。Outlook VBA疑難解答

Sub DeleteaContact() 
    Dim myOutlook As Outlook.Application 
    Dim myInformation As NameSpace 
    Dim myContacts As Items 
    Dim myItems As ContactItem 

    Set myOutlook = CreateObject("Outlook.Application") 
    Set myInformation = myOutlook.GetNamespace("MAPI") 
    Set myContacts = myInformation.GetDefaultFolder(olFolderContacts).Items 

    For Each myItems In myContacts 
     MsgBox (myItems.FirstName) 
    Next 

End Sub 

由於某種原因,我在循環結束時出現零星類型不匹配錯誤。

任何人都可以談談這個問題,爲什麼?

回答

0

嘗試改變:

MsgBox (myItems.FirstName)

到:

MsgBox myItems.FirstName

爲VBA不喜歡不必要的括號

1

文件夾可以存儲更多的不僅僅是數據鍵入」 d期望。更改myItems到

Dim myItems As Object 

,並更改消息框

Debug.Print TypeName(myItems) 

然後檢查即時窗口(CTL + G),看看是否有任何項目都沒有ContactItem。如果你確定你有那裏不是聯繫人,你只需要測試它。保持myItems爲對象,而是使用如下代碼

If TypeName(myItems) = "ContactItem" Then 
    MsgBox myItems.FirstName 
End If 

一般來說,我離開我的變量類型爲特定項目(如ContactItem),而我寫的代碼,然後將它們轉換所有對象時,我完成了。這樣,您可以在編碼時獲得Intellisense的好處。