Private Sub iCheckGs()
'--------验证密码
Dim iPsw$, i&, tmp
iPsw = " " '"300029"
Do
tmp = InputBox( _
"系统温馨提醒:" & Chr(10) & Chr(10) & _
"非专业用户请点击{取消}退出!" & Chr(10) & Chr(10) & _
"请输入密码(您还有 " & 3 - i & " 次机会!)")
If Len(tmp) = 0 Then Exit Sub
If CStr(tmp) = iPsw Then Exit Do
If i >= 2 Then
Application.DisplayAlerts = False
ThisWorkbook.Close False
Application.DisplayAlerts = True
End If
i = i + 1
Loop
'下面是密码通过后的代码
……
……
Sub 按钮1_Click()
Dim 周长 As Double, 面积 As Double, 半径 As Double
周长 = 0
面积 = 0
半径 = 15#
Call SubN(周长, 面积, 半径)
MsgBox 周长 & " " & 面积
End Sub
Sub SubN(ByRef 周长参数, ByRef 面积参数, ByVal 半径参数)
If 半径参数
周长参数 = 0
面积参数 = 0
Else
周长参数 = 2 * 3.14 * 半径参数
面积参数 = 3.14 * 半径参数 * 半径参数
End If
End Sub 以上代码是在Excel的VBA中调试的,可以满足的要。
首先你的ingN 和ingSN是整形数,如果单元格是小数怕是有问题。
另外
For Each rng2 In rng1.Cells
If rng2.Value "" Then
rng2.Select
ingTC = Val(ActiveCell.Offset(1, 0).Value + ActiveCell.Offset(2, 0).Value)
End If
Next rng2
结果ingTC一定是 0
循环到最后rng2.Value 是区域的最下面单元格
Val(ActiveCell.Offset(1, 0).Value + ActiveCell.Offset(2, 0).Value)
在区域下面的两行,一定是空了!
For Each rng3 In rng0.Cells
If rng3.Value = "" Then
shtV.Select
rng3.Select
ingN = Val(ActiveCell.Offset(-1, 0).Value)
End If
Next rng3
要看 rng0.Cells的情况
全是数据,根本不进入IF,
有2个以上的连续空单元,ingN必然为0。
按照你传上来的数据,运行一定为0
没看懂你要干什么,所以也不知道如何改。
另外
If rng2.Value "" Then
rng2.Select
ingTC = Val(ActiveCell.Offset(1, 0).Value + ActiveCell.Offset(2, 0).Value)
End If
写成
If rng2.Value "" Then
ingTC = Val(rng2.Offset(1, 0).Value + rng2.Offset(2, 0).Value)
End If
效率会高许多
以上是获取VBA中InputBox返回的值的详细内容。更多信息请关注PHP中文网其他相关文章!