Excel 将格式复制到宏
我有一个工作簿,工作簿格式会定期更改,但是一旦更改(可能是每周或每月),然后继续执行,直到再次更改为止,宏需要复制该格式。每次更改VBA以考虑新的格式非常耗时。是否可以格式化工作簿,然后将格式轻松复制到VBA(事实上不像宏记录那样)以供将来使用 在过去,我在运行宏的工作簿中使用了一个隐藏的工作表,我基本上是将其复制/粘贴到正在使用的工作表中。这是可行的,但有一个缺点,就是在进行更改时,我首先需要将数据复制到“模板”工作表中,以确保所有内容都与新数据正确对齐 可能是某种宏,它遍历一个范围的所有单元格,并将重新创建格式所需的VBA代码输出到即时窗口Excel 将格式复制到宏,excel,vba,formatting,Excel,Vba,Formatting,我有一个工作簿,工作簿格式会定期更改,但是一旦更改(可能是每周或每月),然后继续执行,直到再次更改为止,宏需要复制该格式。每次更改VBA以考虑新的格式非常耗时。是否可以格式化工作簿,然后将格式轻松复制到VBA(事实上不像宏记录那样)以供将来使用 在过去,我在运行宏的工作簿中使用了一个隐藏的工作表,我基本上是将其复制/粘贴到正在使用的工作表中。这是可行的,但有一个缺点,就是在进行更改时,我首先需要将数据复制到“模板”工作表中,以确保所有内容都与新数据正确对齐 可能是某种宏,它遍历一个范围的所有单元
基本上,任何想法都会有所帮助:)有太多的格式选项,只需将它们存储为单独的选项,所占用的空间将远远超过一个重复的模板表。只需运行第一个代码来更新模板,然后运行第二个代码将其复制回来:
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
(写在我的手机上,无法检查代码,可能有打字错误)您可以使用宏录制器,也可以自己编写VBA代码。你所要求的并不存在实际上,像你那样使用模板工作表是我认为最简单的方法。哦,我不知道为什么我没有想到一个宏只是为了更新第二个模板工作表。。。嗯。。。非常感谢。我不知道该代码是否有效,但在您的手机上编写该代码看起来非常可靠。我肯定会用这个方法。