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

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

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

以下宏是一个示例;在单元格C10中输入某些内容后,便会移动到单元格D5;在单元格D10中输入某些内容后,它会移动到E5:

Private Sub Worksheet_Change(ByVal Target As Range)

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

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

注意:

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

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

本技巧(10314)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: