Excel VBA编程处理公式
问题描述:
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编程处理公式
答
未经检验的,但这样的事情...
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
开始通过使这种变化'工作表( “ASX200”)。B8' >>'工作表( “ASX200”),范围( “B8”) ' – 2014-10-28 21:59:15
抱歉它没有工作 – 2014-10-28 22:22:54
Application.Offset ...?偏移量是Range对象的一个属性。 – barryleajo 2014-10-28 22:52:44