【发布时间】:2018-10-19 00:33:52
【问题描述】:
Sub CountLarge()
Sheets("Data").Select
Dim myNum As Integer
Dim cell As Range
Dim rngFullRange As Range
Dim nLarge As Integer
Do
myNum = Application.InputBox("Enter a number")
If myNum = "" Then Exit Sub
Loop Until myNum > 0 And myNum < 210
With Range(“A1”)
Range(.Offset(1, 0), .End(xlDown).End(xlToRight)).Name =
“dynamicRange”
End With
Set rngFullRange = wsData.Range(“dynamicRange”)
For Each cell In rngFullRange
If cell.Value > myNum Then
nLarge = nLarge + cell.Value
End If
Next
MsgBox (nLarge)
End Sub
这是我的代码,我需要它来遍历工作表中的每个值(数据从 A2 开始并跨越整个工作表,因此我设置了一个动态范围)并将所有大于用户输入的值相加并显示在一个消息框。当我运行程序时,我可以输入一个数字,但最后我没有收到消息框。
**注意:我已经根据您的反馈编辑了代码,目前错误在 With Range("A1") 行中。该范围适合工作表,所以我很困惑为什么数据从 A2 开始并填充工作表的其余部分,这就是我使用这个范围的原因。
【问题讨论】:
-
如果你在
For Loop前面加上debug.print rngFullRange.Address这行,它在即时窗口(Ctrl+G)中的意思是什么? -
。 . .
MsgBox WorksheetFunction.SumIf(wsData.Cells, ">" & InputBox("Enter A Number"))? -
myValue是在哪里定义的?我认为应该是myNum。使用Option Explicit会提醒您此类错误,因为它会强制您定义变量。 -
@Profex 它说运行时错误 13 类型不匹配
-
使用
F8逐步完成。它会陷入循环吗?它绕过任何东西吗?此外,从技术上讲,您似乎在混合"和“。确保确保所有引号都是"而不是其他引号(例如您在dynamicRange周围的引号)。我打赌这就是你在With Range("A1")上出错的原因...因为使用的双引号字符不是 VBA 的正确字符。