我正在運行VBA,並且我有取消按鈕的問題,如果取消按鈕按下或退出按鈕,我不希望更改單元格中的值。如何進行?輸入框中的取消按鈕在excel單元中沒有值的改變
Private Sub Workbook_Open()
Sheets("Start").Range("B1").Value = Application.InputBox(Prompt:="Insert Date", Type:=1)
Cancel = True
End Sub
我正在運行VBA,並且我有取消按鈕的問題,如果取消按鈕按下或退出按鈕,我不希望更改單元格中的值。如何進行?輸入框中的取消按鈕在excel單元中沒有值的改變
Private Sub Workbook_Open()
Sheets("Start").Range("B1").Value = Application.InputBox(Prompt:="Insert Date", Type:=1)
Cancel = True
End Sub
試試這個:
Private Sub Workbook_Open()
Dim inpt
inpt = Application.InputBox(Prompt:="Insert Date", Type:=1)
If CStr(inpt) <> "False" Then Sheets("Start").Range("B1").Value = inpt
End Sub
爲什麼我用CStr(inpt) <> "False"
代替inpt <> False
或只是If inpt Then
的原因,因爲用戶可以輸入0
(它與Type:=1
的輸入框的有效輸入)
完美隊友謝謝 – Xaratsarhs
已經錯過了這個迴應,但仍然認爲更好的運行與數字變量給定日期是必需的,而不是一個變種 – brettdj
是的,同意,+1到您的解決方案。當'0'是有效輸入時(我知道OP使用'插入日期'的日期來操作,但是對於將要使用數字的人) –
這樣的事情(我已將今天的日期作爲默認選項)
Dim lngCnt As Long
lngCnt = Application.InputBox(Prompt:="Insert Date", Default:=Format(Now(), "dd-mmm-yy"), Type:=1)
If lngCnt = 0 Then
'user cancelled
Else
Sheets("Start").Range("B1").Value = lngCnt
End If
感謝隊友,但在這種情況下不是很有用,因爲日期將是上個月的最後一天,而不是總是。只有在本月的第一次打開excel我需要用戶設置新的日期。下次我希望他用取消來繞過它。現在我可以描述一些更復雜的內容,但是感謝你的努力。 – Xaratsarhs
@Xaratsarhs您可以隨時刪除默認設置,或將它拖到上個月的最後一天。它是作爲一個例子提供的。取消檢查持有。 – brettdj
另一種接受日期的方法[HERE](http://stackoverflow.com/questions/12012206/formatting-mm-dd-yyyy-dates-in-textbox-in-vba/12013961#12013961) –