2014-04-08 30 views
2

我正在運行VBA,並且我有取消按鈕的問題,如果取消按鈕按下或退出按鈕,我不希望更改單元格中的值。如何進行?輸入框中的取消按鈕在excel單元中沒有值的改變

Private Sub Workbook_Open() 
    Sheets("Start").Range("B1").Value = Application.InputBox(Prompt:="Insert Date", Type:=1) 
    Cancel = True 
End Sub 
+0

另一種接受日期的方法[HERE](http://stackoverflow.com/questions/12012206/formatting-mm-dd-yyyy-dates-in-textbox-in-vba/12013961#12013961) –

回答

3

試試這個:

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的輸入框的有效輸入)

+1

完美隊友謝謝 – Xaratsarhs

+0

已經錯過了這個迴應,但仍然認爲更好的運行與數字變量給定日期是必需的,而不是一個變種 – brettdj

+0

是的,同意,+1到您的解決方案。當'0'是有效輸入時(我知道OP使用'插入日期'的日期來操作,但是對於將要使用數字的人) –

2

這樣的事情(我已將今天的日期作爲默認選項)

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 
+0

感謝隊友,但在這種情況下不是很有用,因爲日期將是上個月的最後一天,而不是總是。只有在本月的第一次打開excel我需要用戶設置新的日期。下次我希望他用取消來繞過它。現在我可以描述一些更復雜的內容,但是感謝你的努力。 – Xaratsarhs

+0

@Xaratsarhs您可以隨時刪除默認設置,或將它拖到上個月的最後一天。它是作爲一個例子提供的。取消檢查持有。 – brettdj

相關問題