返回列表 上一主題 發帖

[發問] inputbox 出現型態不符合

[發問] inputbox 出現型態不符合

下面代碼如果按確定會正常執行,但若按下取消或esc則會出現
執行階段錯誤 '13':
abbr_d1a0d0cacc406045f3634b6fc1f88fd1.png
2019-12-31 22:44

型態不符合
可以幫我看一下要怎麼改嗎?
  1. Sub 勝場()
  2. Sub 勝場1()
  3. ' 快速鍵: Ctrl+j

  4. row = ActiveCell.row '將當前所在行放進ROX變量中
  5. 勝場數 = Range("by" & row).Value '若有修改去找勝場位置是否還在BY欄
  6. If 勝場數 = "" Then
  7. 勝場數 = "0"
  8. End If
  9. Dim x As String
  10. x = InputBox("第" & row & "行" & "勝場:" & 勝場數 & "場" & vbCrLf & "是否勝利並加鍵入的數量上去", "確認窗口", 1)

  11. 'MsgBox x
  12. '回傳的值,1=確定 2=取消 3=異常終止 4=重試 5=略過 6=是 7=否
  13. If x > 0 Then
  14. Range("by" & row) = 勝場數 + x
  15. ElseIf x = "" Then
  16. MsgBox "已取消操作"
  17. End If
  18. End Sub
複製代碼

回復 1# wei9133


Dim x As String '文字型態
x = InputBox("第" & Row & "行" & "勝場:" & 勝場數 & "場" & vbCrLf & "是否勝利並加鍵入的數量上去", "確認窗口", 1)
'回傳的值,1=確定 2=取消 3=異常終止 4=重試 5=略過 6=是 7=否
If Val(x) > 0 Then '將文字轉為數值
   Range("by" & Row) = 勝場數 + x
ElseIf x = "" Then
   MsgBox "已取消操作"
End If

TOP

回復 2# 准提部林

可以正常操作了,感謝

另外想問一下
為何將
Dim x As Integer '宣告為整數 則會變成錯誤
還有若x 輸入負數則不動作
(無論x宣告為字串或整數都是)

將X值輸入負數
程式碼走到這
Range("by" & row) = 勝場數 + x
應該是 勝場數 + 負值
出來的數字應該是要 勝場數 - 值才對
  1. Dim x As Integer
  2. x = InputBox("第" & row & "行" & "勝場:" & 勝場數 & "場" & vbCrLf & "是否勝利並加鍵入的數量上去", "確認窗口", 1)
  3. '回傳的值,1=確定 2=取消 3=異常終止 4=重試 5=略過 6=是 7=否
  4. MsgBox x

  5. If Val(x) > 0 Then '將文字轉為數值
  6. Range("by" & row) = 勝場數 + x
  7. ElseIf x = "" Then
  8. MsgBox "已取消操作"
  9. End If
  10. End Sub
複製代碼

TOP

回復 3# wei9133

InputBox 按取消後, 是個空字符""
所以 Dim x As Integer 必然發生錯誤, 因為x="", 不是數值

TOP

本帖最後由 准提部林 於 2020-1-4 10:57 編輯

回復 3# wei9133

Sub ttst()
Dim x
x = Application.InputBox("第" & Row & "行" & "勝場:" & 勝場數 & "場" & vbCrLf & "是否勝利並加鍵入的數量上去", "確認窗口", 1)
If x & "" = "False" Then
   MsgBox "已取消操作"   '按取消時(注意:輸入0按確定, x也會被定為0=False, 所以要加"", 變成文字與0做區別)  
ElseIf x = "" Then
   MsgBox "未輸入內容"
ElseIf IsNumeric(x) = False Then
    MsgBox "輸入的非數值"
Else
    Range("by" & Row) = 勝場數 + x
End If
End Sub

TOP

        靜思自在 : 虛空有盡.我願無窮,發願容易行願難。
返回列表 上一主題