如果工作表中的單元格都具有相同的行高和列寬,我們可以用VBA的方法將給定的單元格和區域定位于屏幕中央,下面是VBA代碼:
Sub CenterOnCell(OnCell As Range)
Dim VisRows As Integer
Dim VisCols As Integer
‘關閉屏幕更新
Application.ScreenUpdating = False
‘激活區域所在的工作簿和工作表
OnCell.Parent.Parent.Activate
OnCell.Parent.Activate
‘獲取活動窗口的可視行數和列數
With ActiveWindow.VisibleRange
VisRows = .Rows.Count
VisCols = .Columns.Count
End With
‘ 確定參考單元格并用GOTO方法將該單元格定位到屏幕左上角。
‘ 該參考單元格用給定的單元格的行數和列數分別減去可視行數和可視列數除以2來確定。
‘ 用MAX函數確保參考單元格的最小行數和列數為1。
With Application
.Goto reference:=OnCell.Parent.Cells( _
.WorksheetFunction.Max(1, OnCell.Row + _
(OnCell.Rows.Count / 2) – (VisRows / 2)), _
.WorksheetFunction.Max(1, OnCell.Column + _
(OnCell.Columns.Count / 2) – _
.WorksheetFunction.RoundDown((VisCols / 2), 0))), _
scroll:=True
End With
‘選擇給定的單元格
OnCell.Select
‘啟用屏幕更新
Application.ScreenUpdating = True
End Sub
假如給定的區域為M50:N51,可以在VBA中用下面的方法調用上述代碼:
CenterOnCell Range("m50:n51")