大家好,我们今日继续讲解VBA代码解决方案的第97讲内容:控件跟随鼠标,在利用VBA写代码的时候,往往很多发现是不经意间的。对于这类发现要善于总结,善于利用才能逐渐的提高自己的能力。例如在前几篇文章中讲到的利用文本框录入数据的时候,我们往往需要一个界面,作为录入的界面,在这个界面上再进行相应的操作,录入数据后,数据写到工作表中,这种思路是以录入界面为主窗口的,如果我们换种思维模式,可否还以工作表为主题呢? 这时我们的思路会打开,这时录入的数据跟随单元格,类似于单元格的下拉菜单,这时的录入在某种场合下会很方便。还有,在工作表中使用控件时一般都把控件放在工作表的上部,如果工作表中数据较多,当页面滚动到工作表下面的区域时,控件会离开当前可视区域,这时操作起来很不方便。我们今天就来解答这个大胆的猜想。 看下面的代码: Private Sub Worksheet_Activate() Me.TextBox1.Text = '' End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) TextBox1.Top = Target.Top TextBox1.Left = Target.Left Target.Width End Sub 代码解析:工作表的SelectionChange事件,使工作表中的按钮控件出现在选定单元格的右边。 在上面的代码中我们 第3行代码,设置TextBox1的Top属性等于选定单元格的Top属性。Top属性设置对象顶端到第一行顶端的距离。 第4行代码,设置TextBox1的Left属性等于选定单元格的Left属性加上选定单元格的宽度,即按钮出现在选定单元格的右边。Left属性设置对象左边界至 A 列左边界的距离。 当单击工作表区域的任一单元格,TextBox1出现在单元格的右边。这样就实现了控件跟随光标的移动达到我们最初设计的要求。如果再加上一些代码,如之前代码中的Sheets('sheet11').Range('a65536').End(xlUp).Offset(1, 0) = TextBox1.Text稍加修改:Target.value= TextBox1.Text 或者根据自己的需要就可以随心所欲的完成录入数据了。 代码截图: 运行窗口: 录入数据: 这时就可以跟随单元格来录入数据了。 今日内容回向: 1 如何实现录入文本框的跟随? 上面的思路是否可以理解呢? |
|