在工作表中,Carol的单元格格式设置为“会计”。如果有人不小心在该单元格中输入了日期(mm / dd / yy),Excel会自动更改单元格的格式以正确显示日期。但是,如果她尝试再次在该单元格中输入美元金额,它将不会返回到“会计”格式;该单元格保持日期格式。

如果用户看到并纠正了该错误,那很好,但是很多情况下,这是在带有“样板”文本的模板中发生的,并且该模板受到保护,无法访问格式单元格。卡罗尔想知道是否有人对为什么发生这种情况以及如何纠正它有任何想法。

如果您想要一种快速的方法来防止简单工作表中的格式更改,请按照下列步骤操作:

。显示“ Excel选项”对话框。 (在Excel 2007中,单击Office按钮,然后单击Excel选项。在Excel 2010或更高版本中,显示功能区的“文件”选项卡,然后单击“选项”。)

。在对话框的左侧,单击“高级”。

。滚动到高级选项的最底部。 (请参见图1。)

。确保选择了“转换公式输入”选项。

。单击确定。

此特定选项使Excel以与Lotus 1-2-3相同的方式评估(解析)输入的信息。这意味着日期不再被解析为日期,而是公式。因此,如果某人在单元格中输入11-16-13,则将其解析为“十一减去十六减去十三”,并在该单元格中显示为-18。由于未将其解析为日期,因此可以根据需要保留“计费”格式与该单元格的关联。

但是,这种方法也有缺点。因为Excel随后会根据Lotus规则解析所有条目,所以您的用户可能会得出结论,您的工作表无法正常工作,因为它没有遵循其他Excel工作表所遵循的相同规则。这就是为什么我提到这种方法对于简单的工作表可能是可接受的;您需要确定工作表是否合格。

如果您不想更改解析的方式,最好的方法可能是在工作表中添加一些事件处理程序。例如,您可以包括一个事件处理程序,该程序查看输入数据的位置并确保对这些单元格所做的任何更改都保留所需的格式。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rngToCheck As Range     Set rngToCheck = Range("E2")

If Intersect(Target, rngToCheck) Then         rngToCheck.NumberFormat = _           "_($ #,##0.00_);_($ (#,##0.00);_($* "" - ""??_);_(@_)"

End If End Sub

在此示例中,您要保留“计费”格式的单元格为E2,已分配给rngToCheck变量。如果要在其他单元格范围上强制使用该格式,则只需更改分配行。

如果您想要更多的灵活性,则可以使用一组不同的事件处理程序。例如,以下示例同时使用Worksheet对象的SelectionChange和Change事件。它们导致的某些事情并没有强制使用某种特定格式,但是它可以防止更改单元格的格式。因此,此方法可以保护所有格式,而不仅仅是执行计费格式。

Dim nFormat As String

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rngToCheck As Range     Set rngToCheck = Range("E2")

If Intersect(Target, rngToCheck) Then         rngToCheck.NumberFormat = nFormat     End If End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

nFormat = Target.NumberFormat End Sub

首先触发SelectionChange事件处理程序,将现有格式设置为nFormat变量。然后,Change事件处理程序将触发并将格式设置回原始格式。

您可以尝试的另一种方法是使用数据验证。这种方法不需要任何宏,因此,如果您的工作簿将由可能在其系统上禁用了宏的人员使用,则该方法非常适合。

请遵循以下一般步骤:

。选择要强制其格式的一个或多个单元格。

。显示功能区的“数据”选项卡。

。单击“数据工具”组中的“数据验证”工具。 Excel将显示“数据验证”对话框。

。使用“允许”下拉列表,选择“自定义”。 (请参见图2。)

。在“公式”框中,键入以下内容:= CELL(“ format”,B2)=“ C2”。根据需要设置任何其他数据验证设置。

。单击确定。

公式(第5步)检查单元格的格式,并基于该格式允许或不允许输入。在引用的公式中,格式C2是记帐格式的内部名称。您可以根据自己的喜好轻松地将公式中的代码更改为其他格式,例如“,2”,“ C2”,“ C0”,“ C2-”或“ C0-”。确定应使用哪种格式的最简单方法是,在应用数据验证规则之前,根据需要格式化单元格。 (例如,假设您将格式应用于单元格L13。)然后,您可以在另一个单元格中使用此公式,以查看Excel认为您采用的格式:

=CELL("format",L13)

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(12729)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。