首页 > 解决方案 > VBA Access 2016 IDE 大写对象属性

问题描述

我正在使用 VBA (Access 2016) 中的一段代码来通过他们的 API 获取 MailChimp 联系人的状态:

With CreateObject("MSXML2.ServerXMLHTTP")
    .Open Request, APIUrl & APIString & Criteria, False
    .setrequestheader "Authorization", "Basic " & APIAuth
    .send
    APIResponse = .responsetext
    If InStr(APIResponse, "{""exact_matches"":{""members"":[]") > 0 Then
        MailExist = False
        Else
        MailExist = True
        Set JSONControl = CreateObject("MSScriptControl.ScriptControl")
        JSONControl.language = "Jscript"
        APIString = "XXXXXXX"
        .Open Request, APIUrl & APIString & Criteria, False
        .setrequestheader "Authorization", "Basic " & APIAuth
        .send
        Set Subber = JSONControl.Eval("(" + .responsetext + ")")
        If Subber.status = "subscribed" Then
            MailSub = True
            Else
            MailSub = False
        End If
    End If
End With

最后,我使用“Subber”对象查看联系人是否已订阅

如果 Subber.status = "订阅" 则

直到最近,当“状态”属性突然被 IDE 大写时,这一直运行良好,导致它出错,并显示“对象不支持此属性或方法”消息。

我已经进行了一些挖掘,并在这里找到了类似的解决方案问题,但是在遵循解决方案之后,“状态”仍然被大写。我尝试在整个项目中检查“状态”一词,但没有任何结果,而且我的表单上的控件也没有使用它。我确实有一个名为“状态”的表字段,但我已经重命名了它,所以它不应该影响它,我还尝试设置一个名为“状态”的公共变量。这可以将属性设置回全小写,但是一旦触发代码,属性就会连同变量名一起返回到“状态”。我现在被卡住了,无法弄清楚为什么会出现大写!

标签: ms-accessvba

解决方案


你可以试试CallByName

CallByName函数用于获取或设置属性,或在运行时使用字符串名称调用方法。这意味着您可以将所需的属性作为参数传入,而无需大写。使用 vbGet 检索值。


推荐阅读