行函数数学ClearContents - Excel VBA

时间:2016-08-09 09:26:32

标签: vba excel-vba row clear userform

excel VBA非常新,并且一直致力于使用用户表单创建采购订单。

尝试根据几个变量清除行时遇到问题。

我有一个按钮来清除刚刚添加到工作表中的行,其代码如下:

Private Sub RemovePrevious_Click()

'Removes last line of PO

If LineItemTotal > 1 Then

Rows(LineItemTotal + POrowstart - 1).SpecialCells(xlCellTypeConstants).ClearContents

End If

End Sub

LineItemTotal是工作表上的一个范围,随着添加新行而增加。它在用户表单的开头用POrowstart公开声明:

Private LineItemTotal As Integer
Private POrowstart As Integer

然后将它们分配到不同的子目录中:

LineItemTotal = Range("LineItemTotal")
POrowstart = 10

问题是当使用按钮运行removeprevious子时,数学不会累加。例如,当LineItemTotal为3时,它应删除第12行(正确的一行),但它会删除第11行。如果再次按下它(LineItemTotal现在为2,所以应删除11)它会抛出错误'no cells被发现'好像它正在删除11,但它已经错误地清除了这个。

我在代码中有SpecialCells,因为我想保留的行上有公式。

感谢您对此提供任何帮助。

1 个答案:

答案 0 :(得分:0)

仔细检查变量,因为它们是在模块级别声明的,它们可能与您期望的值不同。一般来说,避免模块级变量并在VBA提供的最低级别声明它们是一个好主意:ROutine级别。如果需要将值传递给另一个例程,请提供该例程参数并将值作为参数传递。