我的代码似乎有问题。它将使用'0'填充整个命名范围"Table_LM"
,而实际上我只想填充那些其值为"Table_Month"
的值为'0'的值。 "Table_Month"
大于/等于10.我假设它只是错误地定义了IF语句......
此外,我觉得我可以使我想要实现的目标更有效,更快捷。有没有人有什么建议?如果需要,我可以添加更多信息......
下面是语法:
Sub Oval2_Click()
Dim c As Range
Const upperlimit As Integer = 10
For Each c In Range("Table_Month")
With Range("Table_LM")
If c.Value >= upperlimit Then
.Value = 0
Else
.Formula = "=table_month*table_long"
.Value = .Value
End If
End With
Next
End Sub
答案 0 :(得分:1)
问题出现是因为Table_LM
“不知道”您正在循环Table_Month
的单元格。你可以这样做:
Sub Oval2_Click()
Dim c As Range
Dim i as Long
Dim NRows as Long
Dim j as Long
Dim NCols as Long
Const upperlimit As Integer = 10
For i = 1 to NRows
For j = 1 to NCols
If Range("Table_Month").Cells(i,j).Value >= upperlimit Then
Range("Table_LM").Cells(i,j).Value = 0
Else
Range("Table_LM").Cells(i,j).Formula = "=table_month*table_long"
' Range("Table_LM").Cells(i,j).Value = .Value
End If
Next j
Next i
End Sub
更多评论:
NRows
和NCols
的值。.Formula = "=table_month*table_long"
做些什么。如果你打算成对地将table_month中的每个单元格乘以table_long中的相应单元格,则需要修改代码以获取单元格地址。.Value = .Value
做些什么。在上一行代码中,您可以设置公式,因此将计算该值。希望有所帮助。
答案 1 :(得分:0)
为什么不呢:
For Each c In Range("Table_Month")
If c.Value >= upperlimit Then
.Value = 0
Else
.Formula = "=table_month*table_long"
.Value = .Value
End If
Next c