EXCEL>如何刷新单元格以应用新的单元格格式?

sku*_*144 0 excel vba excel-vba

我说,单元格中有一个值123456789.12345。默认情况下,excel将其显示为123456789.1。我需要在逗号后查看所有数字,因此我将单元格格式更改为自定义> @

要应用此更改,我需要刷新单元格,例如选择它并按F2,然后按Enter。但是如何对列或范围应用此刷新?

如果可能,请不要使用VBA。

Yor*_*lla 5

您可以加快执行此操作的速度:

没有VBA选项

选择该列,然后转到“ 数据”功能区,然后单击“ 文本到列”

在此处输入图片说明

选择定界,然后单击下一步。

在此处输入图片说明

取消选中所有定界符,然后单击下一步。

在此处输入图片说明

选择文本选项,然后按完成

在此处输入图片说明

所有单元格的数字格式将更新。

这个技巧有点骇人听闻,但确实有效。它要做的是获取每一行中的所有值,然后将它们自动重新输入到单元格中。因此,此技巧不适用于作为公式的单元格。如果您有公式,请按F9键将重新计算工作表并更新数字格式。但是根据我的经验,公式还没有遇到这个问题。

VBA选项

只需使用以下代码创建VBA:

  Sub Oval1_Click()
    Dim i As Integer
    i = 1
    Do Until Cells(i, 1) = 0
     Cells(i, 1).NumberFormat = "@"
     Cells(i, 1).Select
     SendKeys "{F2}", True
     SendKeys "{ENTER}", True
     i = i + 1
   Loop
 End Sub
Run Code Online (Sandbox Code Playgroud)

请记住,要执行此操作,您将需要一个名称为Oval1_click的“按钮”,或者只是将代码添加到您创建的按钮中。

说明:!

1:首先,我们在单击按钮时启动代码

  Sub Oval1_Click()
Run Code Online (Sandbox Code Playgroud)

然后,我们声明一个变量,该变量将用作单元格行的增量值。

    Dim i As Integer
    i = 1
Run Code Online (Sandbox Code Playgroud)

仅当值不等于0时,我们才在第1行第1列(a)中转换为A1的循环。

    Do Until Cells(i, 1) = 0
Run Code Online (Sandbox Code Playgroud)

我们将@格式分配给选定的行(A1)

     Cells(i, 1).NumberFormat = "@"
Run Code Online (Sandbox Code Playgroud)

我们选择,按F2,然后按Enter,到该行(A1)

     Cells(i, 1).Select
     SendKeys "{F2}", True
     SendKeys "{ENTER}", True
Run Code Online (Sandbox Code Playgroud)

我们增加我的价值,以便它可以改变行

     i = i + 1
Run Code Online (Sandbox Code Playgroud)

如果到达该列中的空单元格,则完成循环和代码

   Loop
 End Sub
Run Code Online (Sandbox Code Playgroud)

就是这样。