2012-08-10 40 views
1

在Excel中,我有一個按鈕,它將選定的單元格標記向上移動20個位置,相對於原來位於的單元格。它工作正常,直到它到達頂部,然後出現錯誤。Excel宏按鈕向上移動頁面錯誤

我知道這是[最有可能的],因爲它超出範圍,所以我試着做一個if else語句來解決它 - 我想因爲我不是100%熟悉函數名稱,我可以找不到正確的措辭說: 如果單元格超出範圍,等於0,0或類似的東西。

這是我到目前爲止;該做的工作的唯一位是語句的else部分:

Sub moveUp20() 
    ' 
    ' Move Up 20 Macro 
    ' 

    ' 
    If ActiveCell.Offset(-20, 0) <= Range(0, 0) Then 
    ActiveCell.Select = Range(0, 0) 
    Else 
    ActiveCell.Offset(-20, 0).Select 
    End If 
End Sub 

這可能是一些簡單的因爲我不熟悉的Excel宏編程術語/語義,所以我希望得到一些幫助!謝謝! :)

+1

什麼是你到底想要做的選項?我的意思是爲什麼手動選擇細胞?你想達到什麼目的? – 2012-08-10 14:02:58

+0

我有一個長的Excel電子表格,所以我創建了按鈕作爲一種更快的方式來上下滾動頁面,而不是滾動,因爲20個地方將選定的單元格從一個部分移動到另一個部分。 我應該清楚地說明單元格的內容不會改變 - 它基本上是將所選單元格的「光標」移動到 – dgBP 2012-08-10 14:05:14

+1

爲什麼不設置鼠標的滾動以便相應地滾動行?你不需要vba代碼:) – 2012-08-10 14:07:06

回答

2
Sub moveUp20() 

If ActiveCell.Row > 20 Then 'if you are on row 21 or below 

    ActiveCell.Offset(-20).Select 

Else ' select row 1 of the current column you are on 

    Cells(1, ActiveCell.Column).Select 

End If 

End Sub 
+0

工程就像一個魅力!非常感謝你! :D:D:D p.s. ( – dgBP 2012-08-10 14:13:00

+0

'會投票,但我是一個新手到網站'+ 1 @bladepanthera:我已經爲你做了;) – 2012-08-10 14:14:53

2

對於您想要的功能,最簡單的是

Sub moveUp20() 
    On Error Resume Next 
    ActiveCell.Offset(-20).Select 
    On Error GoTo 0 
End Sub 

如果你願意,你也可以探索的

ActiveWindow.SmallScroll Down:=-20 
+0

+1多個解決方案和另一種解釋使用ActiveWindow.SmallScroll的OP – 2012-08-10 14:22:13

+0

+1 – 2012-08-10 16:21:02