在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