无法产生所需的输出来修改条件语句

问题描述 投票:0回答:1

我正在尝试修改一些参数,并将其附加到一部分网址以使其成为合格的网址。我在字典中使用了这些参数,然后使用IIf函数对其进行了简化。该脚本运行良好,除了第一个我无法摆脱。看看下面的图片,以确保我的意思是“&”号。

enter image description here

我尝试过:

Sub UseParams()
    Const Url$ = "https://www.morningstar.com/api/v1/search/entities?"
    Dim MyDict As Object, DictKey As Variant, mystring$

    Set MyDict = CreateObject("Scripting.Dictionary")

    MyDict("q") = "BE0974256852"
    MyDict("limit") = "1"
    MyDict("id") = ""
    MyDict("autocomplete") = "false"

    For Each DictKey In MyDict
        mystring = IIf(Len(DictKey) = 0, WorksheetFunction.EncodeURL(DictKey) & "=" & WorksheetFunction.EncodeURL(MyDict(DictKey)), _
                        mystring & "&" & WorksheetFunction.EncodeURL(DictKey) & "=" & WorksheetFunction.EncodeURL(MyDict(DictKey)))
    Next DictKey

    Debug.Print Url & mystring
End Sub

输出产生:

https://www.morningstar.com/api/v1/search/entities?&q=BE0974256852&limit=1&id=&autocomplete=false

我希望得到的输出:

https://www.morningstar.com/api/v1/search/entities?q=BE0974256852&limit=1&id=&autocomplete=false

我如何产生所需的输出来修改条件语句,使现有设计保持原样?

vba excel-vba parameters iif
1个回答
0
投票

在这种情况下,您可能想使用For...Next循环而不是For Each...Next循环。这样,您可以通过循环来评估您要使用的密钥。

类似:

For DictKey = 0 to myDict.Count
    mystring = IIf(DictKey = 0, WorksheetFunction.EncodeURL(myDict.Item(DictKey)) & "=" & WorksheetFunction.EncodeURL(MyDict.Item(DictKey)), _
                        mystring & "&" & WorksheetFunction.EncodeURL(myDict,Item(DictKey)) & "=" & WorksheetFunction.EncodeURL(MyDict.Item(DictKey)))
Next DictKey

当前正在循环中,它正在评估Dictionary.Item的长度是否为0(用于返回第一个项目的位置),如果是,则不包含与号,否则会包含。

未经测试,但我敢肯定,它将解决您的问题。 (iif的语法可能会稍微关闭,因为我从不使用该函数)

© www.soinside.com 2019 - 2024. All rights reserved.