我正在处理一个Excel文件,该文件提供了一些工作表来计算不同的事物。这些工作表的最后一个是所有其他工作表的摘要,这些工作表均已预先格式化,可以在标准纸张上完美打印。我想通过单击主页(第一个工作表)上的按钮来打印此摘要。该按钮后面的代码存储在“ Table1”中,如下所示:
Sub Print()
Worksheets("Table5").PageSetup.PrintArea = "B2:N48"
Worksheets("Table5").PrintPreview
End Sub
我在NumPad上有一个带有“,”作为小数点分隔符的德语键盘。我的整个系统都使用“,”。打开文件后,我可以在选择的单元格中输入“ 1,4”之类的东西,一切正常。通过VBA代码打印摘要时,我的问题开始了(请参见上文)。此后,按我的NumPad的“,”会得到一个“”。代替。键盘的标准“,”仍按预期工作。
如果我在打印后不小心使用了NumPad,请在单元格中键入“ 1.4”并按Enter,该单元格将获得用户定义的格式为日期(01.04。或者您可能是01/04或其他名称),并使所有崩溃
我制作了一个简单的测试文件,上面只有两行代码,只有空白要打印。我发现,只有当我真正打印摘要时,问题才会出现。启动预览,然后在打印之前取消预览不会导致此问题。
我用Excel 2010和2016检查了文件,在两种情况下都出现了问题。
如果我保存文件,将其关闭然后再次打开,问题就消失了,但是新格式化的单元格将保留并使文件崩溃。
我还尝试了在打印前后检查Excel的选项,但没有任何改变。
通常,Excel-VBA的“ PrintPreview”可能存在问题。确认我的问题,解决方案或解决方法将非常高兴。我无法将打印过程更改为标准打印,因为我的真实文件要困难得多。
最美好的祝愿
RaspiManu
答案 0 :(得分:1)
我能够重现问题。奇怪的是,在 File> Options> Advanced 下,小数点分隔符仍会显示为逗号。但是问题可以通过以下方式解决:
Application.DecimalSeparator = ","
将再次将小数点分隔符设置为逗号。
编辑,我猜这是一个已知的错误,因为我在此处找到同一问题的this问题。提供的解决方案将代替Worksheets("Table5").PrintPreview
使用:
Application.CommandBars.ExecuteMso "FilePrintPreview"
但是,要使此选项起作用,活动表必须是您要从中打印的表。因此,我还是希望使用第一个建议并设置DecimalSeperator。