我似乎对我的代码有问题。当我只想填充我在我名为 "Table_Month"
的值时,它将填充整个命名范围"Table_LM"
,而当"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
问题出现了,因为 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中配对每个单元格中的每个单元格一个相应的单元格,则需要修改代码以获取单元格地址。 - 我不清楚您想对
.Value = .Value
做什么。在以前的代码中,您设置了公式,因此该值将被计算。
希望会有所帮助。
为什么不只是:
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