一个窗体控件能够链接到多个单元格吗?
Q:如下图1所示,在工作表中,有3个数值调节按钮(窗体控件),每个按钮链接到一个单元格。当点击数值调节按钮的上下箭头时,链接到的单元格中的数值会相应的增加或减少。
图1
通常,我们按下列步骤链接控件和单元格。首先绘制控件,然后选择控件并单击右键,在快捷菜单中选取“设置控件格式”命令。在“设置控件格式”对话框的“控制”选项卡中,设置单元格链接,如图2所示。
图2
当然,在图2所示的“单元格链接”中,可以选择或输入单元格区域,但仍然只是链接到区域左上角的单元格。那么,如何仅使用一个数值调节按钮,将其链接到多个单元格呢?
下面是chandoo.org介绍的技巧,与大家分享。
A:
可以将控件链接到命名公式,而该命名公式会基于当前单元格返回相应的单元格,因此控件将动态链接到相应的单元格,从而实现一个控件可以改变多个单元格的值。
如下图3所示的工作表Sheet2,我们将这个数值调节按钮动态链接到单元格C3、C4、C5,从而能够修改这些单元格中的值。
图3
定义名称如图4所示。
图4
其中,名称:SelectedRow
引用位置:A1
名称:ControlRange
引用位置:=Sheet2!$C$3:$C$5
名称:ControlLink
引用位置:=OFFSET(Sheet2!$C$1,SelectedRow-1,0)
设置控件格式如图5所示。
图5
在VBE编辑器的Sheet2代码模块中,输入代码:
Private SubWorksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target,Range(“ControlRange”)) Is Nothing Then
Range(“SelectedRow”).Value =0
Exit Sub
End If
Range(“SelectedRow”).Value = Target.Row
Application.CalculateFull
End Sub
至此,所有的工作完成。选择单元格C3,单击数值调节按钮,C3中的数值会相应变化,对于单元格C4和C5也是如此,如图6所示。
图6
如果要链接到不连续的单元格区域,例如单元格区域C3:C5、B6:B8、C9:C11中的9个单元格,那么可以将名称ControlRange修改为:
=Sheet2!$C$3:$C$5,Sheet2!$B$6:$B$8,Sheet2!$C$9:$C$11