Excel中使用VBA实现按键、sheet跳转

在sheet中设计一个按钮

打开xlsx文件,另存为xlsm文件(注意:xlsx文件不能包含VBA代码)。 

打开xlsm文件,按Alt+F11进入VBA编程界面。

Excel2007中,开始->Excel选项->自定义,将“开发工具”中的“插入控件”、“查看代码”、“设计模式”添加到快速启动栏。

在快速访问栏上点插入控件,选ActiveX控件里的命令按钮,在sheet里画一个按钮。

在快速访问栏点查看代码,弹出VBA编程界面,在CommandButton1_Click()函数中添加一句代码:

MsgBox(“Hello VBA”)

点保存

回到Excel界面,点击该按钮,将弹出对话框。

在快速访问栏点设计模式,再点按钮,可以调整按钮的位置和大小;在按钮上右键,可以通过属性设置按钮的名称等属性。

注意:

Integer的范围是-32768~32767

Long的范围是-2147483648~2147483647

实现点击按钮后sheet页跳转

函数功能:根据Sheet2选中的cell中的时间,查找Sheet1中对应的时间,并滚动到该行。

‘btn1的按钮回调

Private Sub btn1_Click()

    Call ThisWorkbook.ScrollToDate   ‘调用其他文件的函数,需要在函数前加模块名称

End Sub

‘sheet2中选择区变化时调用,在选择区的第一个cell附近显示按钮btn1

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim btn As Object

    Set btn = Sheet2.Shapes("btn1")

    If Not btn Is Nothing Then

        If Target.Cells(1).Column = 1 Then

            btn.Visible = True

            btn.Top = Target.Cells(1).Top + Target.Cells(1).Height

            btn.Left = Target.Cells(1).Left + Target.Cells(1).Width

        Else

            btn.Visible = False

        End If

    End If

End Sub

Sub ScrollToDate()

    'Debug.Print CDate(Application.Selection.Value)

    Dim i As Long, idx1 As Long

    For i = 11 To 100000000

        If IsDate(Sheet1.Cells(i, 1)) Then

            'Debug.Print Sheet1.Cells(i, 1)

            If CDate(Sheet1.Cells(i, 1)) >= CDate(Application.Selection.Value) Then

                idx1 = i

                Exit For

            End If

        Else

            idx1 = 10

            Exit For

        End If

    Next i

    Sheet1.Activate

    Sheet1.Rows(idx1).Select

    ActiveWindow.ScrollRow = idx1

End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值