2014-10-28 14 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 프로그래밍이 처음 인 사람은 여기에 실수가 무엇인지 설명해주십시오. 오류는 object가이 속성 또는 메서드를 지원하지 않는다고 말합니다. If 문에서 멈 춥니 다. 어떤 도움을 주셔서 감사합니다.Excel VBA 프로그래밍 처리 수식

+2

시작. B8' >>'워크 시트 ("ASX200"). 범위 ("B8") ' –

+0

죄송합니다. 작동하지 않았습니다. –

+0

Application.Offset ...? 오프셋은 Range 객체의 속성입니다. – barryleajo

답변

1

안된하지만,이 같은 ...이 변경`워크 시트 ("ASX200")를함으로써

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

좋은 물건 !! 효과가 있습니다. Tim을 많이 고마워! –

+0

+1 해석 및 단순화 – barryleajo