vba excel inputbox取消退出循环

我有一些application.inputbox的取消button的问题,这似乎是一个问题,很多人不得不面对,但我没有真正pipe理太多适应我的情况下的各种解决scheme。
我想要的是有一个“无限”的循环,要求用户input一个数字,直到他按下input框上的取消。

为了解释这种情况,循环应该询问本月的消费,然后在A1单元中写入月份,在B1中写入消费,然后请求上个月的消费并将其写入下面,直到用户完成要input的数据和按取消,但如果你按取消我的代码将只写入假,并继续运行,尽pipeData = "FALSE"检查。
我在网上find的许多解决scheme都不起作用,因为我需要程序接受0作为一个数字,拒绝任何不是数字的东西,如果在没有任何东西的情况下按下,就不断询问同一个月。

 Dim Data Dim i As Integer, Years As Integer, MonthNum As Integer, LastRow As Integer i = 2 Do While i <= 10 MonthNum = Month(DateAdd("m", -i + 1, Date)) 'calculates month Years = year(DateAdd("m", -i + 1, Date)) 'calculates year Data = Application.InputBox("Please enter consumption of " & vbNewLine _ & MonthNum & "." & Years, "Imput Consumtion", Type:=1) If Data = "FALSE" Then Exit Do Else Cells(i, 1) = MonthName(MonthNum, 1) & " " & Years Cells(i, 2) = Data i = i + 1 End If Loop LastRow = Range("A:A").Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row Range(Cells(i, 1), Cells(LastRow, 2)).Clear 

我正在使用application.inputbox因为我认为它会更好(我尝试使用Type:=1 + 2Type:=1 + 8来解决问题,但没有得到有用的结果),但如果有办法做到这一点与常规的input框我显然是好的。
While i <= 0条件只是为了阻止循环永远继续下去,在我最后的代码,我会放在那里有什么条件我需要退出。

任何提示? 谢谢大家!

问题在于VBA 0 = False,没有=====比较器。 所以你不能直接比较0和False之间的差异。

If Data = "False" ThenData转换为string,然后比较。 如果数据为0,则比较“0”和“假”,如果数据为假,则比较“假”和“假”。 所以这适用于英文Excel版本。

If CStr(Data) = CStr(False) Then或者If TypeName(Data) = "Boolean" And Data = False Then将是区域独立的。