Excel – VBA:为我的表单中的所有单元格设置标准格式

我有一个非常恼人的问题与Excel:我有一些VBAmacros的目的是填补一些其他单元格的内容。 我的问题是,Excel不断改变一些单元格的格式! 谢谢,但我没有要求,每次它试图帮助我,这只会让事情变得更糟。
当我右键单击单元格设置标准格式,然后再次尝试我的macros…它回到Excel的变化!

这是我遇到的问题的一个例子:
在这里输入图像说明

另一个例子是一个数字中的小数位数:如果我的macros正在复制/粘贴一个11位小数的数字,excel只会保留7! 很烦人!

你可以复制你的值只通过传递他们通过一个stringvariables例如

dim s as string s = cstr(myrange.value) mysecondrange.value = s 

如果您的问题仍然存在,您的另一部分代码会出现问题。

另一个问题可能是新的单元格格式化为一般,在这种情况下,Excel将始终假定它知道更好地将格式更改为套件。 根据您的目标,您可能需要使用相同的VBA代码自己设置格式,例如

  mysecondrange.numberformat = "@" 'to text 'or mysecondrange.numberformat = myrange.numberformat 'to other cells format 

一种技术是将您的基础数据与格式化的数据分开。 首先创build基本的数据表,你不关心formmatting。 然后创build您的演示文稿表格,其中包含从基础数据表中提取数据的公式,并将这些演示文稿表格完全locking。 即使Excel不能重新格式化完全locking的工作表。

你使用粘贴粘贴 特殊

前者相当于包含格式的PasteSpecial xlPasteAll

也许你的代码可以使用Range.PasteSpecial xlPasteValuesRange.PasteSpecial xlPasteFormulas