将格式复制到宏

时间:2019-04-02 14:47:59

标签: excel vba formatting

我有一个工作簿,该工作簿的格式会定期更改,但是一旦更改(可能是每周或每月),然后继续操作,直到再次更改,宏需要复制该格式。每次更改VBA以考虑新格式都是非常耗时的。是否可以对工作簿进行格式化,然后将其轻松复制到VBA(事实并非像宏记录一样)以备将来使用?

过去,此后,我在工作簿中使用了一个隐藏的工作表,在该工作表中运行宏,实际上我将其复制/粘贴到正在使用的工作表中。这可行,但是有一个缺点,那就是在进行更改时,我首先需要将数据复制到“模板”表中,以确保所有内容都与新数据正确对齐。

可能是某种宏,它遍历范围内的所有单元,并将重新创建格式所需的VBA代码输出到立即窗口吗?

基本上任何想法都可以帮助:)

1 个答案:

答案 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

(写在我的手机上,无法检查代码,可能有错字)