В соседнем топике уважаемый мембер jurris 03-07-2010 14:14 дал ссылку на опубликованный в другом форуме код. Назначение макроса: переместить фокус ввода к ячейке, которая редактировалась (или была текущей?) предпоследней (аналог хоткея Shift+F5 в MS Word).
[more=код макроса]Private Sub Workbook_Open()
Set rPenultimate = ActiveCell
Set rPrevious = rPenultimate
Set rCurrent = rPenultimate
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
UpdatePenultimate
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
ByVal Target As Excel.Range)
UpdatePenultimate
End Sub
Regular code module:
Public rCurrent As Range
Public rPenultimate As Range
Public rPrevious As Range
Public Sub UpdatePenultimate()
Set rPenultimate = rPrevious
Set rPrevious = rCurrent
Set rCurrent = ActiveCell
End Sub
Public Sub GoToPenultimate()
If Not rPenultimate Is Nothing Then Application.GoTo rPenultimate
End Sub[/more]
Однако после вставки готового кода в окно VBA после каждого блока, завершающегося строкой End Sub, появлятся линейка - разделитель макросов (что, наверное, и логично), а в выпадающем списке макросов вверху окна каждый из блоков этого макроса рассматривается как отдельный макрос. А строка Regular code module: вообще показана красным. Пробовал убрать пустые строки между блоками, но это не помогло.
Подскажите, в чём тут хитрость?
И, кстати, можно ли увеличить число запомненных предыдущих позиций фокуса, скажем, до 5 (этот макрос, как я понимаю, помнит всего две предыдущих позиции)
Спасибо!
[more=код макроса]Private Sub Workbook_Open()
Set rPenultimate = ActiveCell
Set rPrevious = rPenultimate
Set rCurrent = rPenultimate
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
UpdatePenultimate
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
ByVal Target As Excel.Range)
UpdatePenultimate
End Sub
Regular code module:
Public rCurrent As Range
Public rPenultimate As Range
Public rPrevious As Range
Public Sub UpdatePenultimate()
Set rPenultimate = rPrevious
Set rPrevious = rCurrent
Set rCurrent = ActiveCell
End Sub
Public Sub GoToPenultimate()
If Not rPenultimate Is Nothing Then Application.GoTo rPenultimate
End Sub[/more]
Однако после вставки готового кода в окно VBA после каждого блока, завершающегося строкой End Sub, появлятся линейка - разделитель макросов (что, наверное, и логично), а в выпадающем списке макросов вверху окна каждый из блоков этого макроса рассматривается как отдельный макрос. А строка Regular code module: вообще показана красным. Пробовал убрать пустые строки между блоками, но это не помогло.
Подскажите, в чём тут хитрость?
И, кстати, можно ли увеличить число запомненных предыдущих позиций фокуса, скажем, до 5 (этот макрос, как я понимаю, помнит всего две предыдущих позиции)
Спасибо!