为什么我不能从集合中获取项目并将其存储在变量中?

TWiStErRob

我有一个收藏,我曾经有一张String -> MailItem地图。我填写了地图,当我找到重复的钥匙时,我想阅读收藏中的物品。

这似乎很简单,但是我花了一个多小时试图弄清楚为什么我不能将Collection项分配给局部变量。(请参见PROBLEM下面的代码)

oMailOther = cMails.Item(cMailKey) “未设置对象变量或带块变量”

Set oMailOther = cMails.Item(cMailKey) “所需对象”

cMails(cMailKey)一种形式给出相同的错误。调动暗淡没有任何区别。cMails必须可用,因为它在方法的早期使用。请注意Debug.Print此语句之前的那行有效我想念什么?

Option Explicit
Option Compare Text
 
Public cMails As Collection
 
Public Sub GetOutlookAttachments()
    Set cMails = New Collection

    Dim oStore As Store
    For Each oStore In Session.Stores
        If oStore.DisplayName = "Outlook Data File" Then
            ProcessFolder oStore.GetRootFolder()
        End If
    Next
End Sub
 
Private Sub ProcessFolder(oFolder As Folder)
    Debug.Print oFolder.FolderPath
    ProcessItems oFolder.Items

    Dim oSubFolder As Folder
    For Each oSubFolder In oFolder.Folders
        ProcessFolder oSubFolder ' recurse
    Next
End Sub
 
Private Sub ProcessItems(oItems As Items)
    Dim oItem As Object
    For Each oItem In oItems
        DoEvents
        If TypeOf oItem Is MailItem Then
            Dim oMail As MailItem
            Set oMail = oItem
            Dim cMailKey As String
            cMailKey = oMail.ConversationID & "-" & oMail.ConversationIndex
            If Not Contains(cMails, cMailKey) Then
                cMails.Add oMail.Subject, cMailKey
            Else
                Debug.Print cMails.Item(cMailKey)
                Dim oMailOther As MailItem
 PROBLEM        oMailOther = cMails.Item(cMailKey)
                Debug.Print cMailKey & ": " & oMailOther.Subject
            End If
        ElseIf TypeOf oItem Is MeetingItem Then
            ' ignore
        Else
            Debug.Print "oItem Is a " & TypeName(oItem)
        End If
    Next oItem
End Sub

Public Function Contains(col As Collection, key As Variant) As Boolean
    Dim obj As Variant
    On Error GoTo err
    Contains = True
    obj = col(key)
    Exit Function
err:
    Contains = False
End Function

我还尝试在其他地方复制类似内容Add并进行Item调用,并且可以正常工作

Public Sub Test()
    Set cMails = New Collection
    
    Dim cMailKey As String
    cMailKey = "hello"
    cMails.Add Session.Stores.Item(1), cMailKey
    
    Debug.Print cMails(cMailKey)
    Dim oStore As Store
    Set oStore = cMails(cMailKey)
    Debug.Print oStore.DisplayName
End Sub
保罗·奥吉维

我复制了您的代码并运行了它。收集cMails要创建的是一个集合Strings,而不是邮件对象; 但是,oMailOther被声明为Objecttype MailItem

在没有Set关键字的分配中,VB抱怨您要向对象(左侧)分配某些内容,因此应使用Set关键字。现在,使用Set关键字,VB抱怨右侧不是对象。

cMails合并邮件,请更改Add语句,如下所示:

cMails.Add oMail, cMailKey

(即,您不添加oMail.Subject而是整个oMail对象。)

现在,使用Set关键字in Set oMailOther = cMails.Item(cMailKey),一切正常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在golang中,为什么接口变量可以获取结构变量的地址,而不能从基本类型变量获取地址?

来自分类Dev

为什么我不能从闭包中返回引用?

来自分类Dev

为什么我们不能从Java中的RequestBody获取文件数据?

来自分类Dev

为什么我不能从Python类中调用方法?

来自分类Dev

为什么不能从函数中获取Pandas细胞的类型?

来自分类Dev

为什么我不能从闭包中返回对外部变量的可变引用?

来自分类Dev

为什么我不能从python中的异常返回我的局部变量?

来自分类Dev

Kotlin:为什么我不能将函数存储在变量中?

来自分类Dev

为什么我不能从json Retrofit中获取特殊字段?

来自分类Dev

为什么我不能从提取中存储数据

来自分类Dev

为什么我不能从stdin中读取行,删除空格并将其推入向量中?“ line”的寿命不足

来自分类Dev

为什么我不能从获取身份验证令牌错误的模块中模拟功能?

来自分类Dev

为什么我不能从列表中删除所需的元素

来自分类Dev

为什么我不能从该表中删除记录?

来自分类Dev

为什么我不能从XPath查询中检索URL?

来自分类Dev

从文件中获取输入并将其存储在变量中

来自分类Dev

为什么我不能tar / opt并将其移动到Linux中的USB位置

来自分类Dev

为什么我不能从C中的函数传回链表?

来自分类Dev

当我单击按钮并将其存储在会话变量中时,如何获取链接

来自分类Dev

为什么我不能从嵌入式UITableViewController调用存储在父UIViewController中的方法?

来自分类Dev

为什么我不能从远程分支中拉出?

来自分类Dev

为什么我不能从开关内的变量中减去?

来自分类Dev

为什么我不能从 PDO 关联数组中获取信息以进行回显?

来自分类Dev

为什么我不能从类外部访问 __init__ 中定义的类变量?

来自分类Dev

为什么我不能从这个结构中获取文章数据?

来自分类Dev

为什么我不能从这个 C 代码访问在汇编中声明的 Tss 变量?

来自分类Dev

为什么我不能从我的 scss 文件中调用我的 id 变量?

来自分类Dev

为什么我不能从 class() 获取变量

来自分类Dev

为什么我不能从 VBA 中的多实例表单中获取当前记录 ID

Related 相关文章

  1. 1

    在golang中,为什么接口变量可以获取结构变量的地址,而不能从基本类型变量获取地址?

  2. 2

    为什么我不能从闭包中返回引用?

  3. 3

    为什么我们不能从Java中的RequestBody获取文件数据?

  4. 4

    为什么我不能从Python类中调用方法?

  5. 5

    为什么不能从函数中获取Pandas细胞的类型?

  6. 6

    为什么我不能从闭包中返回对外部变量的可变引用?

  7. 7

    为什么我不能从python中的异常返回我的局部变量?

  8. 8

    Kotlin:为什么我不能将函数存储在变量中?

  9. 9

    为什么我不能从json Retrofit中获取特殊字段?

  10. 10

    为什么我不能从提取中存储数据

  11. 11

    为什么我不能从stdin中读取行,删除空格并将其推入向量中?“ line”的寿命不足

  12. 12

    为什么我不能从获取身份验证令牌错误的模块中模拟功能?

  13. 13

    为什么我不能从列表中删除所需的元素

  14. 14

    为什么我不能从该表中删除记录?

  15. 15

    为什么我不能从XPath查询中检索URL?

  16. 16

    从文件中获取输入并将其存储在变量中

  17. 17

    为什么我不能tar / opt并将其移动到Linux中的USB位置

  18. 18

    为什么我不能从C中的函数传回链表?

  19. 19

    当我单击按钮并将其存储在会话变量中时,如何获取链接

  20. 20

    为什么我不能从嵌入式UITableViewController调用存储在父UIViewController中的方法?

  21. 21

    为什么我不能从远程分支中拉出?

  22. 22

    为什么我不能从开关内的变量中减去?

  23. 23

    为什么我不能从 PDO 关联数组中获取信息以进行回显?

  24. 24

    为什么我不能从类外部访问 __init__ 中定义的类变量?

  25. 25

    为什么我不能从这个结构中获取文章数据?

  26. 26

    为什么我不能从这个 C 代码访问在汇编中声明的 Tss 变量?

  27. 27

    为什么我不能从我的 scss 文件中调用我的 id 变量?

  28. 28

    为什么我不能从 class() 获取变量

  29. 29

    为什么我不能从 VBA 中的多实例表单中获取当前记录 ID

热门标签

归档