我有一个按钮的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个值并继续出现同样的问题
你能说出这个问题吗?
答案 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
这只会将列中的任何值视为整数。