凭借多年的编程经验(无论是VBA的初学者),在线参考资料和搜索引擎,我还是因为无法实现这一目标而感到沮丧。
我花了至少两个小时尝试了我能想到的CInt,.Range,With / End With,.Value,Cells等的每一个组合,它只是在&#34上失败了; sum = sum + ..."行:
Public Sub Fill_InnerData()
Dim GNumber As Range
Set GNumber = Range("GenerateNumber")
Dim Data As Range
Set Data = Range("DATA_INNER")
For r = 1 To Data.Rows.Count
For c = 1 To Data.Columns.Count
If Data.Cells(r, c) = "" Then
If c > r Then
Data.Cells(r, c) = 0
Else
Dim x As Integer
x = r - c + 1
Dim y As Integer
y = 2
Dim sum As Integer
sum = 1
For i = 1 To c
sum = sum + CInt(Worksheets("Data").Range(Cells(x, y)).Value)
y = y + 1
Next
End If
End If
Next
Next
End Sub
失败"我的意思是得到这个错误:
运行时错误' 1004':
应用程序定义或对象定义的错误
我在上述行中收到了我尝试的每个组合的错误。
我做错了什么?
答案 0 :(得分:2)
这里的思考是你的语法指的是范围。它应该足够削减它并以这种方式做到:
Sum = Sum + CInt(Worksheets("Data").Cells(x, y).Value)
根据我的经验,如果只提供一个参数,则范围内需要括号内的地址字符串。或者,如果同时提供起始和结束范围点,则可以放置单元格。这两个简单的行具有正确的语法:
Range(Cells(1,1), Cells(2,2)).Select
Range(Cells(1,1).Address).Select
这是无效的:
Range(Cells(1,1)).Select 'error 1004 here