为什么IF声明不起作用?类对象属性=范围选择/单元格问题

时间:2014-09-28 22:17:19

标签: vba excel-vba excel

我遇到了一个奇怪的问题......我的if语句应该有效,但不知何故它仍然没有......我无法理解错误,因为它似乎完全正确。我可以看到选择的目标是A列中的最后一行,然后我将它与我的EURO_USD对象中的t_date属性进行比较,该属性与Column中的字符串完全相同(" A&#34 ;)。结束(xlDown),它仍跳转到else语句(!)。为什么呢?

代码

Option Explicit

Private Sub run() ' run the whole operation

Dim HTTP_Req As Object: Set HTTP_Req = New HTTP_Req
Dim EURO_USD As Object: Set EURO_USD = New EURO_USD
Sheets("EURO_USD").Columns("A").End(xlDown).Select

If Selection = EURO_USD.t_date Then
    Debug.Print "Date already exist"
    Else
        Sheets("EURO_USD").Columns("A").End(xlDown).Offset(1, 0) = EURO_USD.t_date
End If

End Sub

EURO_USD以下课程

Sub fetch() ' get the function o the ECB URL

Dim xDOM_nodeList As MSXML2.IXMLDOMNodeList
Dim xDom As MSXML2.DOMDocument60
Set xDom = New MSXML2.DOMDocument60

xDom.async = False
xDom.Load "http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"

Do Until xDom.readyState = READYSTATE_COMPLETE
    DoEvents
Loop

xDom.setProperty "SelectionNamespaces", "xmlns:f='http://www.ecb.int/vocabulary/2002-08-01/eurofxref' xmlns:c='http://www.gesmes.org/xml/2002-08-01'"

Set xDOM_nodeList = xDom.SelectNodes("//f:Cube[@currency='USD']")
Curr_ticker = Val(xDOM_nodeList.Item(0).Attributes(1).text)

Set xDOM_nodeList = xDom.SelectNodes("//f:Cube[@time]")
Curr_date = xDOM_nodeList.Item(0).Attributes(0).text
End Sub

Public Property Get ticker()

If Curr_ticker = 0 Then
    Call fetch
    End If
ticker = Curr_ticker

End Property

Public Property Get t_date()

If Curr_date = "" Then
    Call fetch
    End If
t_date = Curr_date

End Property

2 个答案:

答案 0 :(得分:2)

删除":"

If Selection = EURO_USD.t_date Then
  Debug.Print "Date already exist"
Else
  Sheets("EURO_USD").Columns("A").End(xlDown).Offset(1, 0) = EURO_USD.t_date
End If

答案 1 :(得分:0)

来自Rory

你的t_Date属性返回一个字符串 - 单元格中的内容是什么?真实的日期值?它的格式与t_Date相同吗?

使用函数datevalue解决了这个问题。