我们从Fields办公室收到一些日常Excel文件,我必须使用一些VBA来清理和重新格式化大约110列和500行。 正如你可以看到我有一大堆VBA,我需要将它们保存为宏,以便我们可以通过运行宏来清理所有新的接收表,最后保存已编辑的表作为新的工作表从UserForm Combobox项目获取名称。
现在我的问题是我应该在哪里存储VBA片段我的意思是当我打开Visual Basic面板时我有这三个选项(据我所知)
A-:从Microsoft Excel对象运行代码:Sheets1(Sheet1)
B-:从插入的模块运行代码
C-:从用户表单运行代码
如果我应该使用选项A或B,我可以如何调用UserForm来保存工作表?
由于
答案 0 :(得分:1)
我建议您使用模块(选项B)
选项C附带选项B,生病解释,你可以在选项B的模块中创建一个子,然后你可以这样做:
UserForm1.show
在选项B中我会写这段代码,但在尝试之前我建议你多了解一下vba
sub ClearWBs()
'opening workbook
Workbooks.Open Filename:="c:\book1.xls"
'your code
'your code
'below code for saving and closing the workbook
Workbooks("book1.xls").Activate
ActiveWorkbook.Save
ActiveWorkbook.Close
end sub
答案 1 :(得分:0)
使用模块:
如果您的VBA代码专注于数据汇总和操作,我建议您使用Module
。(例如您在问题中描述的内容)。
使用表单
如果您不想做的事情需要GUI(图形用户界面),那么您将不得不求助Form
来设计GUI。 (例如,如果您有许多字段,用户需要填写您提供选择的不同值)
使用Excel对象:
如果您不想做的事情与工作表和/或工作簿上发生的事件有关,例如每当您添加工作表时,宏运行,或者当您打开或关闭工作簿时,宏运行,那么您将不得不写Excel Object
中的宏。
这基本上就是我想到的,希望这会有所帮助。
答案 2 :(得分:0)
如果您收到的文件不包含VBA,并且您需要始终对这些文件应用相同的代码,那么我建议您将该代码保存在个人工作簿中。
您可以在此处查看如何执行此操作:http://office.microsoft.com/en-ca/excel-help/copy-your-macros-to-a-personal-macro-workbook-HA102174076.aspx
这很不错,因为您还可以将它绑定到键盘快捷键,或者只是让它随时可供您使用。
缺点是它只能在每台计算机的每个用户会话中设置。您可以做的是将所有代码都设置在模块中,然后在更改会话或其他人必须执行此操作时将其导入到您的个人工作簿中。
完成后,您不必将模块包含在您再次收到的文件中。