【问题标题】:VBA Access 2016 IDE capitalising object propertyVBA Access 2016 IDE 大写对象属性
【发布时间】:2018-10-15 15:36:13
【问题描述】:

我正在使用 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 = "subscribed" 那么

直到最近,“status”属性突然被 IDE 大写,导致它出错,并显示“对象不支持此属性或方法”消息。

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

【问题讨论】:

  • 正如链接所提到的,这主要是一个外观问题。所以这可能只是代码中其他地方发生的其他事情(更糟)的症状。
  • 你能用CallByName吗?
  • @QHarr,CallByName 成功了。非常感谢!
  • 不客气。我将在下面发布,供未来读者参考。

标签: ms-access vba


【解决方案1】:

你可以试试CallByName

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    相关资源
    最近更新 更多