2017-04-24 155 views
0

任何人都可以帮我用我的循环?Excel VBA虽然循环

Dim Lastrow As Long 
Dim i As Variant 
Dim Valid As Boolean 
Dim inputDec As Integer 

Lastrow = Range("D65000").End(xlUp).Row 

While Valid = False 
    i = InputBox("Ve kterém sloupci je datum? (A=1,B=2,C=3, atd..)", "Datum") 

     If IsNumeric(i) Then 
       Valid = True 
      Else 
       Valid = False 
       MsgBox ("Zadejte číslo sloupce! (A=1,B=2,C=3, atd..)") 
     End If 

Wend 

不能输入字母等。但问题是,你可以输入< 0。我是想这样的代码

If IsNumeric(i) And ">0" Then 

但是,这并不工作,并在错误结束,可以有人帮助我吗?

+2

'如果则IsNumeric(i)和I> 0,则'?有点不直观,你不能只做'如果X是Y和Z',你必须做'如果X是Y而X是Z'(显然是伪代码)。你必须每次都充分表达情况。 – BruceWayne

+0

强制用户输入数字的替代方法是仅使用字母(例如'Cells(5,“D”)'是有效的),或者如果您确实需要列**数字**,则使用类似于'列( “d”)。Column'。 – YowE3K

回答

2
If IsNumeric(i) And i > 0 Then 

     Valid = True 

Else 
    Valid = False 
    MsgBox ("Zadejte číslo sloupce! (A=1,B=2,C=3, atd..)") 

End If 
0

为了好玩,这里有另一种方法可以解决这个问题。它不使用Valid只是检查是否符合i您的标准,如果没有,它显示了消息,并要求输入:

Sub t2() 
Dim i As Variant 
Dim inputDec As Integer, lastRow As Integer 

lastRow = Range("D65000").End(xlUp).Row 
i = InputBox("Ve kterém sloupci je datum? (A=1,B=2,C=3, atd..)", "Datum") 

Do Until IsNumeric(i) And i > 0 
    i = InputBox("Zadejte císlo sloupce! (A=1,B=2,C=3, atd..)" & vbCrLf & vbCrLf & "Ve kterém sloupci je datum?", "Datum") 
Loop 

'Code here will fire when `i` is Numeric and greater than 0 
Debug.print "Vstup uživatele: " & i 

End Sub