2017-05-05 130 views
0

我试图执行If语句,因此如果变量的值等于"Mils",它将执行所述函数。但目前没有任何事情发生。“If/Then”语句不起作用

我在做什么错?

z = Sheet2.range("B20").value 
If z = "Mils" Then 
    Set cx = Sheet8.range("D3", Sheet8.range("D3").End(xlDown)) 
    For Each rng In cx 
     rng.value = rng.value/y 
    Next rng 
    Set cy = Sheet8.range("E3", Sheet8.range("E3").End(xlDown)) 
    For Each rngy In cy 
     rngy.value = rngy.value/y 
    Next rngy 
End If 
+2

如果您在'z = Sheet2.range'行设置了一个断点并逐步完成代码,那么您会看到什么情况?当'z'到达'If z ='Mils'Then'行时,它的值是多少?当您继续浏览代码时会发生什么? –

+0

对不起,不太明白 –

+1

将光标置于'z ='行并按F9。代码运行并达到该点时,它将停止。按F8键执行该行代码;它会再次停止。看看'z'包含什么,然后再次按F8来执行'If z ='这一行。它会再次停止。点击F8继续浏览代码,并查看下一步的位置。 –

回答

1

从什么我读,你的程序可能忽略一些你的指令。

试试这个问题的解决方法:

1)在将光标并单击代码。

If z = "Mils" Then 

2)单击F9把一个标记上线

3)点击F8键逐步(这是什么关键的作用是它运行的程序,直到该代码。因此,它基本上说明你的流量你的程序)

4)检查是否F8跳过任何你的代码中:

If z = "Mils" Then 
    Set cx = Sheet8.range("D3", Sheet8.range("D3").End(xlDown)) 
    For Each rng In cx 
     rng.value = rng.value/y 
    Next rng 
    Set cy = Sheet8.range("E3", Sheet8.range("E3").End(xlDown)) 
    For Each rngy In cy 
     rngy.value = rngy.value/y 
    Next rngy 
End If 

如果跳过任何步骤,那么你或许应该看看跳过的步骤,使NE术后调整。

+1

小问题 - “将光标悬停在上方” - 在按F9之前,您实际上必须单击该行,否则当前行将以断点结束,而不是鼠标悬停的那一行。 (PS你也可以点击行左边的边界区域,从而节省了一次击键 - 但我不得不承认,对于一些新的调试人员来说,这有点难以描述。) – YowE3K

+0

你可能想澄清一下你代码的意思是'忽略'指令。我从来没有见过代码“忽略”指令,但是我曾经看到过用户认为他们的'If'语句的计算结果为True时,如果计算结果为false,结果代码不会在if区块内运行行的情况(这是预期的)。 –