工作表窗体控件共用事件代码

16 篇文章 0 订阅
9 篇文章 0 订阅

实例需求:某预测模型有4个输入参数,使用过程中需要依次分别加载4组不同的参数,参数组位于工作表中的第4行到第7行,并且在A列中添加了四个窗体控件按钮,单击某个按钮,希望将相应行的数据(一组参数)加载到第2行单元格中。
对于略有VBA基础的人来说,解决这个问题并不难,每个按钮写一个事件代码,将相应行的四个参数拷贝(写入)到第2行单元格中,但是如果要求四个按钮共用同一个事件代码,那么如何实现这个需求呢?
在这里插入图片描述
示例代码如下。

Sub LoadParameters()
    Dim s As Shape
    For Each s In ActiveSheet.Shapes
        If s.Type = msoFormControl Then
            If Replace(s.Name, "Button", "按钮") = Application.Caller Then
                [b2].Resize(1, 4).Value = s.TopLeftCell.Offset(0, 1).Resize(1, 4).Value
            End If
        End If
    Next
End Sub

【代码解析】
可以使用Shapes对象集合循环遍历工作表中的Shape,并根据其类型来定位窗体控件按钮。
第3~9行代码用于循环遍历工作表中的Shape对象。
第4行代码根据Type属性识别窗体控件。
窗体控件按钮的Name属性是Button x的形式,Application.Caller返回调用此事件过程的控件名称,其值为按钮 x的形式,因此第5行代码需要使用Replace函数进行替换,进而确定被点击按钮控件。
第6行代码中,使用控件的TopLeftCell属性返回按钮所在单元格,然后将该行的参数写入到第2行的单元格中。


只要使用按钮控件的指定宏功能,关联LoadParameters过程,然后单击按钮,就可以加载相应的参数组。
在这里插入图片描述
灵活使用对象的属性与方法通常可以简化VBA代码过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值