Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Изменить клавишу вызова макроса - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Изменить клавишу вызова макроса
vatnat Дата: Четверг, 21.11.2013, 14:37 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте! Вопрос такой, в этом коде при двойном шелчке мыши вызывается макрос. Возможно сделать так что бы макрос выводился при нажатии клавиши Ф4.

[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
   Cancel As Boolean)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
Dim wsList As Worksheet
Set ws = ActiveSheet
Set wsList = Sheets("ValidationLists")

Set cboTemp = ws.OLEObjects("TempCombo")
   On Error Resume Next
   With cboTemp
   'clear and hide the combo box
     .ListFillRange = ""
     .LinkedCell = ""
     .Visible = False
   End With
On Error GoTo errHandler
   If Target.Validation.Type = 3 Then
     'if the cell contains a data validation list
     Cancel = True
     Application.EnableEvents = False
     'get the data validation formula
     str = Target.Validation.Formula1
     str = Right(str, Len(str) - 1)
     With cboTemp
       'show the combobox with the list
       .Visible = True
       .Left = Target.Left
       .Top = Target.Top
       .Width = Target.Width + 5
       .Height = Target.Height + 5
       .ListFillRange = str
       .LinkedCell = Target.Address
     End With
     cboTemp.Activate
     'open the drop down list automatically
     Me.TempCombo.DropDown

   End If
    
errHandler:
   Application.EnableEvents = True
   Exit Sub

End Sub
'=========================================
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
Set ws = ActiveSheet
Application.EnableEvents = False
Application.ScreenUpdating = True

If Application.CutCopyMode Then
   'allow copying and pasting on the worksheet
   GoTo errHandler
End If

Set cboTemp = ws.OLEObjects("TempCombo")
   On Error Resume Next
   With cboTemp
     .Top = 10
     .Left = 10
     .Width = 0
     .ListFillRange = ""
     .LinkedCell = ""
     .Visible = False
     .Value = ""
   End With

errHandler:
   Application.EnableEvents = True
   Exit Sub

End Sub
'====================================
'Optional code to move to next cell if Tab or Enter are pressed
'from code by Ted Lanham
'***NOTE: if KeyDown causes problems, change to KeyUp

Private Sub TempCombo_KeyDown(ByVal _
         KeyCode As MSForms.ReturnInteger, _
         ByVal Shift As Integer)
     Select Case KeyCode
         Case 9 'Tab
             ActiveCell.Offset(0, 1).Activate
         Case 13 'Enter
             ActiveCell.Offset(1, 0).Activate
         Case Else
             'do nothing
     End Select
End Sub
[/vba]
 
Ответить
СообщениеЗдравствуйте! Вопрос такой, в этом коде при двойном шелчке мыши вызывается макрос. Возможно сделать так что бы макрос выводился при нажатии клавиши Ф4.

[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
   Cancel As Boolean)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
Dim wsList As Worksheet
Set ws = ActiveSheet
Set wsList = Sheets("ValidationLists")

Set cboTemp = ws.OLEObjects("TempCombo")
   On Error Resume Next
   With cboTemp
   'clear and hide the combo box
     .ListFillRange = ""
     .LinkedCell = ""
     .Visible = False
   End With
On Error GoTo errHandler
   If Target.Validation.Type = 3 Then
     'if the cell contains a data validation list
     Cancel = True
     Application.EnableEvents = False
     'get the data validation formula
     str = Target.Validation.Formula1
     str = Right(str, Len(str) - 1)
     With cboTemp
       'show the combobox with the list
       .Visible = True
       .Left = Target.Left
       .Top = Target.Top
       .Width = Target.Width + 5
       .Height = Target.Height + 5
       .ListFillRange = str
       .LinkedCell = Target.Address
     End With
     cboTemp.Activate
     'open the drop down list automatically
     Me.TempCombo.DropDown

   End If
    
errHandler:
   Application.EnableEvents = True
   Exit Sub

End Sub
'=========================================
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
Set ws = ActiveSheet
Application.EnableEvents = False
Application.ScreenUpdating = True

If Application.CutCopyMode Then
   'allow copying and pasting on the worksheet
   GoTo errHandler
End If

Set cboTemp = ws.OLEObjects("TempCombo")
   On Error Resume Next
   With cboTemp
     .Top = 10
     .Left = 10
     .Width = 0
     .ListFillRange = ""
     .LinkedCell = ""
     .Visible = False
     .Value = ""
   End With

errHandler:
   Application.EnableEvents = True
   Exit Sub

End Sub
'====================================
'Optional code to move to next cell if Tab or Enter are pressed
'from code by Ted Lanham
'***NOTE: if KeyDown causes problems, change to KeyUp

Private Sub TempCombo_KeyDown(ByVal _
         KeyCode As MSForms.ReturnInteger, _
         ByVal Shift As Integer)
     Select Case KeyCode
         Case 9 'Tab
             ActiveCell.Offset(0, 1).Activate
         Case 13 'Enter
             ActiveCell.Offset(1, 0).Activate
         Case Else
             'do nothing
     End Select
End Sub
[/vba]

Автор - vatnat
Дата добавления - 21.11.2013 в 14:37
KuklP Дата: Четверг, 21.11.2013, 15:50 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Нет. Это событийные макросы. Но вы можете создать несобытийные публичные макросы выполняющие ту же задачу и присвоить им хоткей.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеНет. Это событийные макросы. Но вы можете создать несобытийные публичные макросы выполняющие ту же задачу и присвоить им хоткей.

Автор - KuklP
Дата добавления - 21.11.2013 в 15:50
Hugo Дата: Четверг, 21.11.2013, 16:58 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3707
Репутация: 792 ±
Замечаний: 0% ±

365
Можно примерно так:
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     MsgBox Target.Address
End Sub

Sub test()
     Call Worksheet_BeforeDoubleClick(ActiveCell, True)
End Sub
[/vba]
Ну а тесту задать горячую клавишу.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеМожно примерно так:
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     MsgBox Target.Address
End Sub

Sub test()
     Call Worksheet_BeforeDoubleClick(ActiveCell, True)
End Sub
[/vba]
Ну а тесту задать горячую клавишу.

Автор - Hugo
Дата добавления - 21.11.2013 в 16:58
AndreTM Дата: Четверг, 21.11.2013, 17:05 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Игорь, правильнее - наоборот :)
[vba]
Код
' Модуль листа
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Test Target
End Sub

' Общий модуль
Sub test(rng as Range)
      MsgBox rng.Address
End Sub
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеИгорь, правильнее - наоборот :)
[vba]
Код
' Модуль листа
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Test Target
End Sub

' Общий модуль
Sub test(rng as Range)
      MsgBox rng.Address
End Sub
[/vba]

Автор - AndreTM
Дата добавления - 21.11.2013 в 17:05
Hugo Дата: Четверг, 21.11.2013, 17:29 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3707
Репутация: 792 ±
Замечаний: 0% ±

365
Я всего лишь показал, что событийный макрос вполне можно вызвать без события :)


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЯ всего лишь показал, что событийный макрос вполне можно вызвать без события :)

Автор - Hugo
Дата добавления - 21.11.2013 в 17:29
vatnat Дата: Четверг, 21.11.2013, 17:40 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо за отзывы, если можете вставьте исправленный код в коде который я выложил ранее, у меня не получается както.
 
Ответить
СообщениеСпасибо за отзывы, если можете вставьте исправленный код в коде который я выложил ранее, у меня не получается както.

Автор - vatnat
Дата добавления - 21.11.2013 в 17:40
Hugo Дата: Четверг, 21.11.2013, 17:54 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3707
Репутация: 792 ±
Замечаний: 0% ±

365
Вставлять то некуда...

Да там всех делов добавить где-то рядом
[vba]
Код
Sub test()
     Call Worksheet_BeforeDoubleClick(ActiveCell, True)
End Sub
[/vba]
Ну и позаботьтесь не вызывать этот макрос при другом активном листе!


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеВставлять то некуда...

Да там всех делов добавить где-то рядом
[vba]
Код
Sub test()
     Call Worksheet_BeforeDoubleClick(ActiveCell, True)
End Sub
[/vba]
Ну и позаботьтесь не вызывать этот макрос при другом активном листе!

Автор - Hugo
Дата добавления - 21.11.2013 в 17:54
vatnat Дата: Четверг, 21.11.2013, 20:08 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Если добавлять где-то рядом выдает ошибку >( что поделать можете подсказать?
 
Ответить
СообщениеЕсли добавлять где-то рядом выдает ошибку >( что поделать можете подсказать?

Автор - vatnat
Дата добавления - 21.11.2013 в 20:08
Hugo Дата: Четверг, 21.11.2013, 22:38 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3707
Репутация: 792 ±
Замечаний: 0% ±

365
Продолжайте добавлять! :)
Если и через полчаса не заработает - начинайте читать правила.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеПродолжайте добавлять! :)
Если и через полчаса не заработает - начинайте читать правила.

Автор - Hugo
Дата добавления - 21.11.2013 в 22:38
vatnat Дата: Пятница, 22.11.2013, 08:53 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Всем большое спасибо ! :)
 
Ответить
СообщениеВсем большое спасибо ! :)

Автор - vatnat
Дата добавления - 22.11.2013 в 08:53
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!