Мне нужна помощь в попытке использовать полосу прокрутки UserForm (fmScrollBarsVertical) для вызова функции записи времени в создаваемом мной макросе и записи времени взаимодействия в XLS. Я создал фиктивный файл, который я прикреплю, чтобы вы могли увидеть общие функциональные возможности программы и увидеть соответствующую пользовательскую форму (названную «TargetForm»). Чтобы выполнить пример программы, макрос должен быть запущен из формы 'MainWindow' .
https://drive.google.com/file/d/1OV5UlZNx8YjRTKYmZ-a_wLG5Qk3jcmgZ/view?usp=sharing
В программе я использую mouseDown / mouseUp для отслеживаниязапись времени для взаимодействия пользователя с интерфейсом и необходимость чего-то подобного для аспекта прокрутки. Если вы проверите мой код с помощью командных кнопок в качестве ссылки, вы увидите, как я сейчас пишу эти времена в соответствующий лист XLS.
Private Sub level1button_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
RecordTime (Timer())
End Sub
Private Sub level1button_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
RecordTimeEnd (Timer())
End Sub
Private Sub level1button_Click()
Call beep
TrialNum = TrialNum + 1
Record ("Main-Level1")
SetTrial (TrialNum)
Me.Hide
Level1.Show
End Sub
Я пытался использовать свойства ActiveX для регистрации, когда пользователь взаимодействует с полосой прокрутки, однако это не привело к успешному результату. Моя текущая панель запуска выглядит следующим образом:
Private Sub TargetForm_Scroll(ByVal ActionX As MSForms.fmScrollAction, ByVal ActionY As MSForms.fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle)
If ActionY = fmScrollActionControlRequest Then
Record ("TargetForm-Scroll")
MainWindow.TrialNum = MainWindow.TrialNum + 1
MainWindow.SetTrial (MainWindow.TrialNum)
MainWindow.TargetFormscroll = 0
RecordTimeEnd (Timer())
End If
End Sub
Я также пытался использовать fmScrollActionPropertyChange для начальной точки безрезультатно, fmScrollActionFocusRequest в качестве функции «таймер остановки» и функции case, но я продолжаю работать до отказа. Моя последняя попытка была попытка использовать scroll_change (), опять же, что привело к сбою.
Private Sub TargetForm_Change()
If MainWindow.TargetFormscroll = 0 Then
RecordTime (Timer())
MainWindow.TargetFormscroll = MainWindow.TargetFormscroll + 1
End If
End Sub
У меня есть рабочая версия, использующая комбинированный список и дескрипторы событий прокрутки, однако это не совсем идеально, так как ядля точного отражения UX необходимы наложения изображений в пользовательской форме, а поле со списком основано исключительно на тексте.
Для ясности запрошенный сервис должен помочь диагностировать / исправить мое невежество и помочь в реализации кода для отслеживать продолжительность взаимодействия пользователя с полосой прокрутки UserForm . Для этого не нужно использовать значения ActiveX или какой-либо другой вариант моих попыток, просто завершите задачу записи времени, записанного на листе.
Извините, если что-то из этого было неясно. Попытка сообщить о проблемах на языке, который вы еще не до конца понимаете, - подвиг. Пожалуйста, не стесняйтесь комментировать или сообщать любые вопросы или проблемы, которые могут у вас возникнуть.