我在使用 excel 时遇到了一个非常烦人的问题:我有一些 VBA 宏,其目的是用一些内容填充其他一些单元格。我的问题是excel不断改变某些单元格的格式!谢谢,但我没有要求这个,每次它试图帮助我时,它只会让事情变得更糟。
当我右键单击单元格以设置标准格式然后再次尝试我的宏时...它会返回到 excel 更改!
这是我遇到的问题的一个示例:
另一个例子是数字中的小数位数:如果我的宏正在复制/粘贴一个小数点后 11 位的数字,excel 只会保留 7 位!!很烦人!
您只能通过将它们传递给字符串变量来复制您的值,例如
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
一种技术是将基础数据与格式化数据分开。首先创建您不关心格式的基本数据表。然后使用从基础数据表中提取数据的公式创建演示表,并完全锁定这些演示表。甚至 Excel 也无法重新格式化完全锁定的工作表。
您使用的是Paste还是PasteSpecial。
前者相当于PasteSpecial xlPasteAll
包括格式。
也许您的代码可以使用Range.PasteSpecial xlPasteValues
或Range.PasteSpecial xlPasteFormulas