我在excel中制作了这个简单的发票控制工作表,我使用VBA使其更容易可视化和添加新项目。我已经制作了许多其他VBA编程的工作表,并且它们都有一个“新的”活动x按钮,编程就像这样:
Private Sub ButtNew2_Click()
Dim Guia As Worksheet
Dim UltLin As Integer
Set Guia = Workbooks("Notas Fiscais.xlsm").Worksheets("Saída")
UltLin = Guia.UsedRange.Rows.Count + 1
Guia.Application.Goto Reference:="R" & UltLin & "C1"
FormNotasSaida.Show
FormNotasSaida.BoxDataEmiss.SetFocus
End Sub
这很简单。只需选择第一个空白行,以便表单加载空白。它在任何其他工作簿中都可以正常工作。但是在这个中,如果我每次单击此按钮,在关闭表单后,下次(并且只有一次)我会以任何可能的方式再次加载表单(双击一个项目,按“显示”按钮或再次按“新建”按钮,它会加载空白或显示上次启动的项目(例如,你这样做)。
关闭它后,我可以点击任何地方或按“显示”按钮,它们一如既往地工作正常。按“新建”按钮后,问题仅发生一次。
我可能做错了什么,特别是知道这种方法在所有其他工作簿中都能完美运行?
答案 0 :(得分:3)
FormNotasSaida.Show FormNotasSaida.BoxDataEmiss.SetFocus
表单是一种特殊的类模块,具有设计器和预先声明的ID 属性。这个“预先声明的ID”在这里起作用:您正在使用/重用该类的默认全局实例,并且[除非您使用控件框中的X按钮关闭它,] never { {1}}所以你总是展示相同的形式。
最佳做法是每次使用时创建表单的新实例:
unload