Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.11.2008, 16:19   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Можно ли макросом, отключить колесико мышки

Можно ли макросом, отключить колесико мышки?
valerij вне форума
Старый 17.11.2008, 17:15   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Можно, но очень сложно. Даже не буду приводить примеры - там очень много строк кода...

Можно для этого использовать сторонние программы, но управлять ими из Excel тоже не очень просто.

Самый простой и надёжный способ (без макроса) - вытащить / выломать колёсико из мыши. Для надёжности можно вообще отключить мышь (ну и клавиатуру заодно).

Кстати, полностью отключить мышь (программно) не так сложно - делается одной командой... Правда, для её включения соответствующей команды нет...

Может, Вам пригодятся стандартные функции Excel:

Например, ActiveSheet.ScrollArea = "f77" отображает ячейку f77 и запрещает скроллинг (и ручную прокрутку) листа.

А команда ActiveSheet.ScrollArea = "" восстанавливает возможность перехода к другим ячейкам.
EducatedFool вне форума
Старый 17.11.2008, 17:30   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Можно для этого использовать сторонние программы.
Знаю, но не желательно, мне именно в одном файле xls, желательно скролл отключить
Сделал так
ActiveSheet.ScrollArea = "A1:O27"
Класс, кадр как в копаный, но переключить на др. кадр A29:O55, не могу.
Цитата:
вытащить / выломать колёсико из мыши..
Супер мысль, поставить микрик, надо – не надо!!(на полном серьезе)

Последний раз редактировалось valerij; 17.11.2008 в 18:41.
valerij вне форума
Старый 18.11.2008, 07:56   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сделал так
ActiveSheet.ScrollArea = "A1:O27"
Класс, кадр как в копаный, но переключить на др. кадр A29:O55, не могу.
Всё нормально переключается... (Excel 2003 rus)

Код:
Sub test()
    ' работаем с одним диапазоном
    ActiveSheet.ScrollArea = "A11:O57"
    ' потом переключаемся на другой
    ActiveSheet.ScrollArea = "A211:O257"
End Sub
Или так:

Код:
Sub test2()
    ' прокручиваем экран до нужной строки
    ActiveWindow.ScrollRow = 40
    ' блокируем все ячейки кроме А40
    ActiveSheet.ScrollArea = "A40"
    ' или оставляем доступным диапазон ячеек
    ActiveSheet.ScrollArea = "A40:h80"
    ' потом, если надо, отключаем блокировку
    ActiveSheet.ScrollArea = ""
    ' и снова ставим блокировку
    ActiveSheet.ScrollArea = "A140:h180"
End Sub
EducatedFool вне форума
Старый 18.11.2008, 15:12   #5
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Всё нормально переключается... (Excel 2003 rus)
То же Excel 2003 rus, а как Вы переключаете(чем)?

Поясню, мне надо, что бы на экране, стоял кадр в диап. "A1:O27", при нажатии кл. PgDn, кадр сменился с шагом 28, т. е. "A29:O55" и т. д.(вниз), а при нажатии кл. PgUp, назад(вверх) и при этом колесико не должно работать(Что бы не возможно, колесиком, установить кадр, вне шага 28)
У меня есть, замечательный макрос, написанный Уважаемым SAS888, вот он
Код:
Public Const St = 28 'Требуемый шаг
Public AdrR As Long
Public AdrC As Long
Sub Vniz()
    AdrR = ActiveCell.Row + St: AdrC = ActiveCell.Column
    If AdrR > 1582 Then AdrR = 3
    On Error Resume Next
    Application.Goto Cells(ActiveWindow.ScrollRow + St, ActiveWindow.ScrollColumn), True
    Cells(AdrR, AdrC).Select
End Sub
Sub Vverh()
    AdrR = ActiveCell.Row - St: AdrC = ActiveCell.Column
    If AdrR < 0 Then AdrR = 3
    On Error Resume Next
    Application.Goto Cells(ActiveWindow.ScrollRow - St, ActiveWindow.ScrollColumn), True
    Cells(AdrR, AdrC).Select
End Sub
Запускается он так
Код:
Private Sub Workbook_Open()
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
                .OnKey "{PGDN}", "Vniz"
                .OnKey "{PGUP}", "Vverh"
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub
Может мона тут "подхимичить" для колесика?
valerij вне форума
Старый 18.11.2008, 15:43   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
а как Вы переключаете(чем)?
Как чем? Макросом, естественно...
Привёл же пример:
Код:
Sub test()
    ' работаем с одним диапазоном
    ActiveSheet.ScrollArea = "A11:O57"
    ' потом переключаемся на другой
    ActiveSheet.ScrollArea = "A211:O257"
End Sub
Поработали с одним диапазоном (к примеру, "A11:O57"), потом, когда надо, переключились на следующий командой ActiveSheet.ScrollArea = "A211:O257"

Цитата:
Может мона тут "подхимичить" для колесика?
Попробуйте такой вариант:

Код:
Sub Vniz()
    AdrR = ActiveCell.Row + St: AdrC = ActiveCell.Column
    If AdrR > 1582 Then AdrR = 3
    On Error Resume Next
'    Application.Goto Cells(ActiveWindow.ScrollRow + St, ActiveWindow.ScrollColumn), True
'    Cells(AdrR, AdrC).Select
    ActiveSheet.ScrollArea = "" ' временно отключаем блокировку, чтобы можно было пролистать экран
    ActiveWindow.ScrollRow = ActiveWindow.ScrollRow + St ' проматываем экран на St = 28 строк вниз
    Dim area As Range ' area - диапазон доступных для редактирования ячеек
    Set area = Range(Cells(ActiveWindow.ScrollRow, "A"), Cells(ActiveWindow.ScrollRow + St - 1, "O"))
    ActiveSheet.ScrollArea = area.Address: area.Cells(1).Select
End Sub

Sub Vverh()
    AdrR = ActiveCell.Row - St: AdrC = ActiveCell.Column
    If AdrR < 0 Then AdrR = 3
    On Error Resume Next
    'Application.Goto Cells(ActiveWindow.ScrollRow - St, ActiveWindow.ScrollColumn), True
    'Cells(AdrR, AdrC).Select
    ActiveSheet.ScrollArea = "" ' временно отключаем блокировку, чтобы можно было пролистать экран
    ActiveWindow.ScrollRow = ActiveWindow.ScrollRow - St ' проматываем экран на St = 28 строк вверх
    Dim area As Range ' area - диапазон доступных для редактирования ячеек
    Set area = Range(Cells(ActiveWindow.ScrollRow, "A"), Cells(ActiveWindow.ScrollRow + St - 1, "O"))
    ActiveSheet.ScrollArea = area.Address: area.Cells(1).Select
End Sub
EducatedFool вне форума
Старый 18.11.2008, 16:24   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Попробуйте такой вариант:
Попробовал, сори, не-до-объяснил в задачи.
У меня сидят полные ламера, они в жизни не догадаются(объяснять....), что бы сработал макрос нужно щелкнуть кл. PgDn.
Поэтому нужно, что бы открыл файл и все, кадр "A1:O27", вкопанный, кнопками листаем....
valerij вне форума
Старый 18.11.2008, 16:32   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Так в чём проблема?

Добавьте при запуске книги команду ActiveSheet.ScrollArea = "A1:O27", и всё.

Теперь Вашим "ламерам" только и останется, что листать файл заданными Вами кнопками - "{PGDN}"и "{PGUP}"

Получится примерно так:

Код:
Private Sub Workbook_Open()
    Application.OnKey "{PGDN}", "Vniz"
    Application.OnKey "{PGUP}", "Vverh"
    ActiveSheet.ScrollArea = "A1:O27"
    [a1].Select
End Sub
Цитата:
они в жизни не догадаются(объяснять....), что бы сработал макрос нужно щелкнуть кл. PgDn.
А Вы им ко всему прочему хотите ещё и прокрутку заблокировать...
Так разъясните им, что и как надо нажимать, а потом и блокируйте прокрутку...

Последний раз редактировалось EducatedFool; 18.11.2008 в 16:34.
EducatedFool вне форума
Старый 18.11.2008, 16:52   #9
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А Вы им ко всему прочему хотите ещё и прокрутку заблокировать...
Если я не заблокирую прокрутку, умудрятся, чуть прокрутить и в разные числа будут вводить данные!

Теперь все работает, только как сделать что бы курсор прыгал не в А1, А29...., а при перещелкивании на D3, D31....
ActiveSheet.ScrollArea = "A1:O27"
[D3].Select

А еще лучше, сохраниться на месте выхода из файла

Разобрался, все ОК
при запуске книги, убрал команду ActiveSheet.ScrollArea = "A1:O27", но добавил
Run "Vniz"
Run "Vverh"
А в макросах "Vniz, Vverh" поменял значение на
area.Cells(St - 25, 4).Select

Последний раз редактировалось valerij; 18.11.2008 в 17:23.
valerij вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь с макросом twolfy Microsoft Office Excel 5 06.10.2008 10:44
хелп с макросом Aivar Microsoft Office Word 8 28.09.2008 02:10
Помогите с макросом SoFuWa Microsoft Office Excel 7 15.08.2008 15:26