excel-vba如果功能消息"集合是基于一个"

Sta*_*tan 1 excel vba if-statement excel-vba

我收到错误消息"集合是基于一个"但我无法弄清楚我的代码有什么问题.

下表是数据提供者: dp2 = ActiveDocument.DataProviders("Test2")

     Quantity      Switchmon      Currency
     -------------------------------------
1)     150             Y             EUR
2)     250,006         N             USD
3)     132,4           Y             EUR
4)      24             Y             GBP
5)       1             N             USD
Run Code Online (Sandbox Code Playgroud)

现在我需要根据这些数据发送自动电子邮件.我需要Excel-VBA中的一个函数,它在每一行中查找"Switchmon"列的值.

当值为"N"时,我需要在电子邮件中加上字符"P".当值为"Y"时,我需要将"Currency"列的值放在那里.

我的电子邮件中的结果应如下所示:

1) 150  EUR
2) 250,006  P
3) 132,4  EUR
4) 24  GBP
5) 1  P
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下函数实现此目的:

Dim strbody As String
Dim dp1 As DataProvider
Dim dp2 As DataProvider
Set dp2 = ActiveDocument.DataProviders("Test2")
Dim k As Integer
Dim numcurr As String

If dp2.Columns("Switchmon").Item(k) = "N" Then
    numcurr = "P"
Else
    numcurr = dp2.Columns("Currency").Item(k)
End If

For k = 1 To dp2.Columns(1).Count
    strbody = dp2.Columns("Quantity").Item(k) & "numcurr"
    Debug.Print strbody
Next k
Run Code Online (Sandbox Code Playgroud)

此函数给我一个错误消息"集合是基于一个".我的代码出了什么问题?

注意:

我知道我可以在Excel中添加一个if()公式的列,但不幸的是,在这种特殊情况下,这不是解决方案.

JNe*_*ill 5

在你的For循环上面你使用变量,k但是因为你只是把它作为一个int而没有设置它,它默认为0. Columns.Item()基于1(从第1项开始,而不是0)所以你得到一个错误.在使用之前设置k.