在Excel中,使用VBA,是否有方法映射、存储和重新应用格式?

在Excel中,使用VBA,是否有方法映射、存储和重新应用格式?,excel,vba,formatting,Excel,Vba,Formatting,所以,我有一个报告,我想确保它的格式正确,不管格式是由用户还是由excel更改的-有没有办法自动映射文档的当前格式如果是逐单元格映射就好了,将它存储在宏中,以便我以后可以使用它?您需要一份处于未更改状态的报告副本。您可以在同一工作簿中使用隐藏工作表,也可以在单独的工作簿中使用工作表。当您想将格式重置为默认值时,可以执行以下操作 shBackup.UsedRange.Copy shReport.UsedRange.PasteSpecial xlPasteFormats 这种方法有几个问题。列宽不

所以,我有一个报告,我想确保它的格式正确,不管格式是由用户还是由excel更改的-有没有办法自动映射文档的当前格式如果是逐单元格映射就好了,将它存储在宏中,以便我以后可以使用它?

您需要一份处于未更改状态的报告副本。您可以在同一工作簿中使用隐藏工作表,也可以在单独的工作簿中使用工作表。当您想将格式重置为默认值时,可以执行以下操作

shBackup.UsedRange.Copy
shReport.UsedRange.PasteSpecial xlPasteFormats
这种方法有几个问题。列宽不使用格式粘贴,因此如果用户可以更改列宽,则需要另一种存储列宽的方法。更大的挑战可能是何时创建shBackup,但希望您现有的代码能够让它变得显而易见

如果用户可以通过(比如)在shReport中插入行或列来更改UsedRange,那么上面的代码就不会起作用。但我认为这要追溯到创建备份副本时


这样做的基础是Excel已经有了保存所有所需设置的基础结构。它有范围对象、字体对象、内部对象等。因此,与其滚动您自己的映射结构,不如使用Excel已经拥有的来存储所有属性。

您需要一份处于未更改状态的报告副本。您可以在同一工作簿中使用隐藏工作表,也可以在单独的工作簿中使用工作表。当您想将格式重置为默认值时,可以执行以下操作

shBackup.UsedRange.Copy
shReport.UsedRange.PasteSpecial xlPasteFormats
这种方法有几个问题。列宽不使用格式粘贴,因此如果用户可以更改列宽,则需要另一种存储列宽的方法。更大的挑战可能是何时创建shBackup,但希望您现有的代码能够让它变得显而易见

如果用户可以通过(比如)在shReport中插入行或列来更改UsedRange,那么上面的代码就不会起作用。但我认为这要追溯到创建备份副本时

这样做的基础是Excel已经有了保存所有所需设置的基础结构。它有范围对象、字体对象、内部对象等。因此,与其滚动自己的映射结构,不如使用Excel已经拥有的来存储所有属性

制作新的工作表 选择整个原始工作表 抄写 现在选择步骤1中创建的新工作表的A1 选择“特殊粘贴”,它位于“粘贴”右侧的下拉菜单上 选择格式 您现在制作了一个空白的电子表格,其中包含第一个电子表格中的所有格式。现在,您可以随意将此新电子表格中的特殊格式复制粘贴到原始电子表格中

制作新的工作表 选择整个原始工作表 抄写 现在选择步骤1中创建的新工作表的A1 选择“特殊粘贴”,它位于“粘贴”右侧的下拉菜单上 选择格式
您现在制作了一个空白的电子表格,其中包含第一个电子表格中的所有格式。现在,您可以随意将此新电子表格中的特殊格式复制粘贴到原始电子表格中。

如果您不指定要映射的功能,问题太广泛,答案可能无法满足您的要求。字体?数字格式?边界?颜色?条件格式?图表格式?分页符?纸张尺寸?表格格式?支点@belisarius:+1是的,我的首选是获取所有非默认格式配置的转储,以便我能够决定什么是重要的,什么不是。不知道这是否可能,但这正是我想要的。谢谢你的评论!好啊我明白,但对我来说太宽泛了。标记为收藏夹,以查看是否有人提出了任何建议。祝你好运如果您不指定要映射的功能,问题就太广泛了,答案可能不会让您满意。字体?数字格式?边界?颜色?条件格式?图表格式?分页符?纸张尺寸?表格格式?支点@belisarius:+1是的,我的首选是获取所有非默认格式配置的转储,以便我能够决定什么是重要的,什么不是。不知道这是否可能,但这正是我想要的。谢谢你的评论!好啊我明白,但对我来说太宽泛了。标记为收藏夹,以查看是否有人提出了任何建议。祝你好运