我现在一直在研究数学演习计划。我曾经问过类似的问题,但是我没有得到任何好的帮助。所以我决定更彻底地研究这个问题并找到一些有趣的东西。
现在在我开始之前,我只是想要了解预赛。是的,我正在使用Microsoft Excel 2007.不,虽然这可能适合您,但它不适合我。
现在好了,这是照顾:
我遇到的问题是我什么时候
ActiveCell.NumberFormat = "# ?/?"
在我的代码中它导致excel的中心线向左移动(这是我知道如何解释它的唯一方法)。
意思是,如果你有正确对齐的东西,它会看起来居中,如果它居中,它几乎是左对齐的,左和中间对齐的差别很小。
如果我有
ActiveCell.NumberFormat = "?/?"
然后没有上述问题。
本节的全部代码如下:
Sub test()
Sheets("sheet1").Select
Range("a1").Select
For i = 1 To 10
ActiveCell.NumberFormat = "# ?/?"
With ActiveCell
.Locked = False
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
End With
ActiveCell.Value = 33
ActiveCell.Offset(0, 1).Select
Next i
End Sub
任何有关为何发生这种情况的建议或原因将不胜感激。理想情况下,用户应该能够看到一个混合数字。
更多信息,如果我手动将每个单元格更改为分数,那么它可以正常工作。只有当excel这样做时才会这样做。
答案 0 :(得分:1)
编辑(2)
我也尝试使用Excel 2007,如果我手动或通过脚本更改NumberFormat,则没有任何区别。
无论如何,以下脚本应该做你想要的。将其添加到工作表的源代码中。
每当更改值时都会触发它。然后它检查正确的列是否受到影响(在我的情况下为1),然后它尝试使用分数格式化数字,但如果没有得到分数,则它使用无分数格式。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
For Each cell In Target.Cells
If cell.Column = 1 Then
If IsNumeric(cell.value) Then
cell.NumberFormat = "# ?/?"
cell.Calculate
If InStr(1, cell.Text, "/") = 0 Then
cell.NumberFormat = "#"
End If
End If
End If
Next cell
End Sub
原帖
我只在Excel 2003中尝试过,但是手动或通过VBA设置它没有区别。请确保您的代码与您手动执行的操作完全相同,只需记录您手动执行的操作宏,然后在另一个单元格上运行。
转变的原因是Excel保留了分数的空间。
1,2 -> | 1 1/5|
1 -> | 1 |
33 -> | 33 |
33,5 -> | 33 1/2|
以下是您想要的内容吗?
1,2 -> | 1 1/5|
1 -> | 1|
33 -> | 33|
33,5 -> | 33 1/2|
为什么你会喜欢这种格式?
答案 1 :(得分:1)
正在对齐数字,以便在使用固定宽度字体的列中查看小数部分时对齐。
3 1/3
2
1 3/4
3 2/7
2 2/3
3 1/2
6
答案 2 :(得分:0)
实际上,条件格式可以更好地集中所有内容。请参阅下面的图片以了解我的设置。