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,因为我想保留的行上有公式。
感谢您对此提供任何帮助。
答案 0 :(得分:0)
仔细检查变量,因为它们是在模块级别声明的,它们可能与您期望的值不同。一般来说,避免模块级变量并在VBA提供的最低级别声明它们是一个好主意:ROutine级别。如果需要将值传递给另一个例程,请提供该例程参数并将值作为参数传递。