Excel 将格式复制到宏

Excel 将格式复制到宏,excel,vba,formatting,Excel,Vba,Formatting,我有一个工作簿,工作簿格式会定期更改,但是一旦更改(可能是每周或每月),然后继续执行,直到再次更改为止,宏需要复制该格式。每次更改VBA以考虑新的格式非常耗时。是否可以格式化工作簿,然后将格式轻松复制到VBA(事实上不像宏记录那样)以供将来使用 在过去,我在运行宏的工作簿中使用了一个隐藏的工作表,我基本上是将其复制/粘贴到正在使用的工作表中。这是可行的,但有一个缺点,就是在进行更改时,我首先需要将数据复制到“模板”工作表中,以确保所有内容都与新数据正确对齐 可能是某种宏,它遍历一个范围的所有单元

我有一个工作簿,工作簿格式会定期更改,但是一旦更改(可能是每周或每月),然后继续执行,直到再次更改为止,宏需要复制该格式。每次更改VBA以考虑新的格式非常耗时。是否可以格式化工作簿,然后将格式轻松复制到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代码。你所要求的并不存在实际上,像你那样使用模板工作表是我认为最简单的方法。哦,我不知道为什么我没有想到一个宏只是为了更新第二个模板工作表。。。嗯。。。非常感谢。我不知道该代码是否有效,但在您的手机上编写该代码看起来非常可靠。我肯定会用这个方法。