2014-10-28 36 views
0
Private Sub RefreshBenchmarks_Click() 
Dim ws As Worksheet 

Set ws = Worksheets("INDEX CHANGES") 

If Not IsError(Application.Offset(ws!S3, _ 
          Application.Match(Worksheets("ASX200").B8, _ 
          ws.Range("CONSTITUENT_CHANGES"), 0), 0, 1, 1) = "D" _ 
          And _ 
          Application.Offset(ws!N3, _ 
          Application.Match(Worksheets("ASX200").B8, _ 
          Range("CONSTITUENT_CHANGES"), 0), 0, 1, 1) = "Y") Then 

    Worksheets("ASX200").J8 = 0 

我是vba編程新手,有人可以請解釋一下這裏有什麼錯誤。錯誤說對象不支持這個屬性或方法。它停在If語句。任何幫助讚賞。Excel VBA編程處理公式

+2

開始通過使這種變化'工作表( 「ASX200」)。B8' >>'工作表( 「ASX200」),範圍( 「B8」) ' – 2014-10-28 21:59:15

+0

抱歉它沒有工作 – 2014-10-28 22:22:54

+0

Application.Offset ...?偏移量是Range對象的一個​​屬性。 – barryleajo 2014-10-28 22:52:44

回答

1

未經檢驗的,但這樣的事情...

Private Sub RefreshBenchmarks_Click() 

    Dim wsIdx As Worksheet, wsAsx As Worksheet, v, m 

    Set wsIdx = Worksheets("INDEX CHANGES") 
    Set wsAsx = Worksheets("ASX200") 

    m = Application.Match(wsAsx.Range("B8").Value, _ 
          wsIdx.Range("CONSTITUENT_CHANGES"), 0) 

    If Not IsError(m) Then 

     If wsIdx.Range("S3").Offset(m, 0).Value = "D" And _ 
      wsIdx.Range("N3").Offset(m, 0).Value = "Y" Then 

      wsAsx.Range("J8").Value = 0 

     End If 


    End If 

End Sub 
+0

好東西!它正在工作。非常感謝蒂姆! – 2014-10-29 02:46:14

+0

+1爲您解釋和簡化 – barryleajo 2014-10-29 07:40:58