防止在Excel中显示散列符号(#),而不更改单元格的格式或宽度

我有以下Excel VBA代码:

Sheet1.Columns.ColumnWidth = 8.14 Sheet1.Rows.EntireRow.RowHeight = Sheet1.Cells(1).Width Sheet1.Cells.WrapText = True Sheet1.Cells.NumberFormat = "F0 P0 C0" & vbLf & "00 00 00" Sheet1.Cells.Value = 123456789 

前两行使我的表格中的单元格为8.14个水平点的完美平方,下面的行旨在使每个单元格看起来像这样(也就是在同一个单元格中的可视“分离”部分中显示9位数字):

 F1 P2 C3 45 67 89 

问题是,由于它的感知长度,Excel取代了我的数字(它应该完全适合于在两行上的8.14磅大小的单元格,因为它是用字符包装的),因为它的感知长度 – 我不想这样做。

有没有办法,通过Excel设置或VBA代码,以防止这种自动行为,而不改变单元格格式为“一般”或“文本”,或增加单元格的宽度?

现在我已经看到过这个问题,但是所有的答案都提到了改变单元格的格式或大小,我不能这样做,原因有两个:

  • 这个表格被认为是一个或多或less的地理“地图”,其中每个单元格都是该地图上的一个点,所以很自然地,我需要在Excel的可见部分中显示尽可能多的“点”。 如果我使单元格(方块)变大,我几乎不能将10×4的网格放入可见部分,以100%的缩放比例 – 因为我必须将单元格先前的大小加倍到124像素,以使Excel显示我的编号不变

  • 如果我将格式更改为“文本”(akastring单元格值),则我的Excel文件变得很大(约1MB),并且几乎不可用,因为地图大约为255×128“点”。 与相同数量的“文本”/string格式化的单元相比,255×128数字格式的单元工作得更快

  • 如果我将格式更改为“常规”或多或less与上述相同,再加上我不能使用自定义格式来“分隔”我的数字部分,如我的示例所示(是的,这是预期的外观) 。

编辑:虽然检查http://datapigtechnologies.com/blog/index.php/forcing-carriage-return-in-custom-date-format/我发现从某个戴夫(信贷给他),这也是解决scheme对我的问题:

如果您尝试缩小列宽,您会注意到在您(或我)认为您应该看到之前您会看到####的方式。 但是稍微改变就可以解决这个问题。 在格式单元格对话框的alignment选项卡上,closures包裹文本(如果打开)。 打开“缩小到适合”,然后打开包装文本。

我试了一下,它的工作! 这个VBA代码同样简单 – 在我的初始代码之后添加下面的代码来实现:

 Sheet1.Cells.WrapText = False Sheet1.Cells.ShrinkToFit = True Sheet1.Cells.WrapText = True 

我不想“欺骗”并回答自己的问题,所以我把它写成了原文的编辑。