Rob有许多用于评估评分的工作表。第一个工作表包含用于名称,日期等的单元格,然后是用于输入多项选择响应的几列。工作表受到保护,因此只能更改输入单元格。当用户完成一列中的最后一个单元格时,焦点将跳到下一个不受保护的单元格,该单元格可能是下一列中的第一个单元格,也可能是“日期”单元格。 Rob想知道如何控制焦点,以便在将值输入到列中的最后一个(底部)单元格时,该值将移至他指定的单元格。

在Excel中,没有内置的方法可以执行此操作,因为该程序会确定自己选择下一个选择的单元格的顺序。您可以在工作表中按Enter时修改下一个选定的单元格,但是在受保护的工作表中按Tab时不能修改会发生的情况。

默认情况下,在工作表中从左到右选择单元格,然后从上到下选择单元格。

如果您想修改按下Tab键时发生的情况,那么您将需要使用宏来控制选择顺序。

以下宏是一个示例;它在离开单元格C10时移动到单元格D5,而在离开单元格D10时移动到E5:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False     If Target.Address = "$C$10" Then Range("D5").Select     If Target.Address = "$D$10" Then Range("E5").Select     Application.EnableEvents = True End Sub

使用这样的VBA解决方案的问题在于,它会使您的电子表格(尤其是很大的电子表格)更加缓慢。从本质上讲,宏还意味着禁用“撤消”功能。

如果您的制表顺序需求更加复杂,那么您可能会对在此网页上讨论的代码感兴趣:

http://www.ozgrid.com/forum/showthread.php?t=82272

如您所知,代码有时会变得相当复杂。当然,由于这种方法规定了所有单元格之间的移动,因此使更改工作表本身的设计更加困难。

注意:

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

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

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

链接:/ excelribbon-Controlling_Entry_Order_on_Unprotected_Cells [控制不受保护单元的进入顺序]。