Excel-VBA-包含变量的IF-Else语句的第一部分未回答

时间:2018-05-14 06:31:06

标签: excel vba excel-vba if-statement

我有一个按钮的VBA代码,可以在excel中依次增加单元格的值。 代码是这样的:

Dim current_row As Long '<-- global variable Current Row
Sub Button6_Click()
    current_row = Sheets("Sheet2").Cells(1, 1)
    If Sheets("Sheet1").Cells(current_row, 7) = 0 Then
        Sheets("Sheet1").Cells(18, 1) = 555555
        current_row = 11  '<-- return to first record row at the end of table-end of table has 0 value
    Else
        current_row = current_row + 1 '<--increases of 1 each click
    End If
    Sheets("Sheet1").Cells(current_row, 7) = Sheets("Sheet1").Cells(current_row, 7) + 1
    Sheets("Sheet2").Cells(1, 1) = current_row
    Sheets("Sheet1").Cells(17, 1) = current_row
End Sub

在IF子句的第一部分,当我使用current_row时,条件永远不会为真(但是,current_row的值正确更改,并且我添加了一个命令,用于在单元格行18中显示正确的临时显示current_value和第1列)但是当我写一个数字而不是current_row变量并且目标单元格的值为零时,IF的第一个为真并继续正确。 此代码适用于这样的表:

+=============+========================+
| **Name**    |**Number of tasks done**|
+=============+========================+
| Joe         |                      3 |
+-------------+------------------------+
| John        |                      2 |
+-------------+------------------------+
| Emma        |                      1 |
+-------------+------------------------+
| Sophia      |                      1 |
+-------------+------------------------+
|End of Table |                      0 |
+-------------+------------------------+

同时,我在表格结束后清除了所有单元格值,表示所有单元格都是1,并在表格零结束时写入,或者将表格的单元格末尾留空,不进行操作,取得了启动从第一个数字开始的值表格的行开始从表格开始增加,但在表格结束后再次继续插入1个值并继续出现同样的问题

你能说出这个问题吗?

2 个答案:

答案 0 :(得分:1)

我发现了问题。

在IF语句之前,从指定的单元格接收变量的值,并在条件下检查如果单元格值等于零,则将一个单元添加到变量,然后基于单元初始化在current_row旁边。表示检查当前单元格的数量是否为0,但是下一个单元格已初始化,因此表格结尾的值(零)始终在审核之前或之后发生变化且永不为零。

正确的代码是:

Dim current_row As Long '<-- global variable Current Row
Sub Button6_Click()
    current_row = Sheets("Sheet2").Cells(1, 1)
    If Sheets("Sheet1").Cells(current_row, 7) = "end" Then
        Sheets("Sheet1").Cells(18, 1) = 5453
        current_row = 11
        Sheets("Sheet1").Cells(current_row, 7) = Sheets("Sheet1").Cells(current_row, 7) + 1
        current_row = current_row + 1
    Else
        Sheets("Sheet1").Cells(current_row, 7) = Sheets("Sheet1").Cells(current_row, 7) + 1
        current_row = current_row + 1 '<--increases of 1 each click
    End If
    Sheets("Sheet2").Cells(1, 1) = current_row
    Sheets("Sheet1").Cells(17, 1) = current_row
End Sub

感谢所有

答案 1 :(得分:0)

您可以尝试更改if语句的子句:

If Sheets("Sheet1").Cells(current_row, 7)=0

为:

If Int(Sheets("Sheet1").Cells(current_row, 7))=0

这只会将列中的任何值视为整数。