我有一个工作簿,该工作簿的格式会定期更改,但是一旦更改(可能是每周或每月),然后继续操作,直到再次更改,宏需要复制该格式。每次更改VBA以考虑新格式都是非常耗时的。是否可以对工作簿进行格式化,然后将其轻松复制到VBA(事实并非像宏记录一样)以备将来使用?
过去,此后,我在工作簿中使用了一个隐藏的工作表,在该工作表中运行宏,实际上我将其复制/粘贴到正在使用的工作表中。这可行,但是有一个缺点,那就是在进行更改时,我首先需要将数据复制到“模板”表中,以确保所有内容都与新数据正确对齐。
可能是某种宏,它遍历范围内的所有单元,并将重新创建格式所需的VBA代码输出到立即窗口吗?
基本上任何想法都可以帮助:)
答案 0 :(得分:0)
有太多的格式化选项,仅将它们存储为单独的选项将比复制模板模板占用更多的空间。只需运行第一个代码来更新您的模板,然后运行第二个代码以将其复制回:
option Explicit
Const TemplatesheetName = "mytemplate"
Sub CopyFormatting
dim ws as worksheet
dim source as worksheet
set source = activesheet
for each ws in worksheets
if ws.name = templatesheetname then
exit for
end if
next ws
if ws is nothing then
set ws = worksheets.add
ws.name = templatesheetname
end if
ws.usedrange.clearformats
source.usedrange.copy
ws.range("a1").pastespecial xlpasteformats
ws.visible = xlveryhidden
end sub
Sub BringBackFormats
dim ws as worksheet
for each ws in worksheets
if ws.name = templatesheetname then
exit for
end if
next ws
if ws is nothing then
msgbox "No template found",vbokonly,"Unabl;e to run"
else
ws.cells.copy
activesheet.range("a1").pastespecial xlpasteformats
end if
exit sub
(写在我的手机上,无法检查代码,可能有错字)