lis*_*aro 11 excel vba excel-vba
从UserForm向工作簿添加新工作表时遇到问题.基本上每当我添加新工作表时,它似乎都链接到同一工作簿中的另一个工作表.
我已经能够通过创建一个新的Excel文件,然后添加一个带有此代码的新用户窗体,相当容易地重现这个问题:
Private Sub UserForm_Click()
Sheets.Add
Call Unload(Me)
End Sub
Run Code Online (Sandbox Code Playgroud)
如果我从这样的表单打开用户表单:
然后我双击userform,问题已经发生.
新工作表工作不正常.例如,如果我在新工作表的任何单元格上书写,我将从原始工作表中获取格式.更糟糕的是,如果原始工作表受到保护,我不允许在新工作表上书写(虽然功能区显示它没有受到保护).
如果我选择另一张纸并再次选择新纸张,则一切都恢复正常.难道我做错了什么?如果它是一个错误,有任何解决方法吗?
这是一个产生错误的Excel文件:Drive.google.com
我认为,它以某种方式与 ShowModal 属性相关,可能是一些错误。
解决方法
添加UserForm2,将其ShowModal属性设置为false,编辑代码。
UserForm1 的代码:
Private Sub UserForm_Click()
Unload Me
End Sub
Private Sub UserForm_Terminate()
UserForm2.Show
End Sub
Run Code Online (Sandbox Code Playgroud)
UserForm2 的代码:
Private Sub UserForm_Activate()
Sheets.Add
Unload Me
End
End Sub
Run Code Online (Sandbox Code Playgroud)
这个想法是:关闭旧的用户窗体,创建一个将添加一张表的新用户窗体。
请随意下载工作示例并尝试一下。
更简单的方法?
我还注意到,当 userForm1 终止时,Module1 中的代码继续运行。那么为什么不在那里添加新的工作表呢?module1 的代码为:
Sub ShowForm()
UserForm1.Show
Sheets.Add
End Sub
Run Code Online (Sandbox Code Playgroud)
UserForm1 的代码:
Private Sub UserForm_Click()
Unload Me
End Sub
Run Code Online (Sandbox Code Playgroud)