Jeremy提出了一个基于两个单元格A1和C1的问题。这些单元格设计为分别包含英寸和毫米。

杰里米(Jeremy)希望有人可以在A1中输入一个值,然后在C1中将其转换为毫米。相反,他们可以在C1中输入一个值,然后在A1中将其转换为英寸。

当然,进行转换不是真正的问题。问题是,如果有人在A1中输入一个值,则该值将覆盖该单元格中可能存在的任何公式,并且意味着在单元格C1中输入的任何后续值都不会在先前覆盖的A1中提供所需的转换。

可以采用几种不同的方法。如果您不介意将工作表设计扩展为包含两个以上的单元格,则这些单元格可以严格用于输入,而单元格A1和C1可以严格用于输出。输入单元中的一个可以包含要转换的值,另一个输入单元可以包含输入值的度量单位(例如,以in或mm为单位)。

当然,如果您想将自己限制为两个单元格,那么您将需要使用宏进行实际的转换。您可以使用每次更改单元格值时触发的工作表事件,事件处理程序可以检查要更改的单元格是A1还是C1。以下宏给出了如何工作的示例:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False     With ActiveSheet         If Target = .[A1] Then             .[C1].Value = .[A1].Value * 25.4         ElseIf Target = .[C1] Then             .[A1].Value = .[C1].Value / 25.4         End If     End With     Application.EnableEvents = True End Sub

请注意,您不必在单元格A1或C1中有任何公式。公式位于宏本身中。如果单元格A1中有更改(用户输入英寸),则宏中将更改单元格C1中的值。同样,如果单元格C1中有更改(用户输入毫米),则宏中将更改单元格A1中的值。

宏将忽略除A1或C1以外的任何其他单元格中的更改。

注意:

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

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

本技巧(3277)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: