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中文網其他相關文章!