みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

重ねてよろしくお願いします

質問は、縦のスクロールバーをクリックまたは移動したとき、回答のマクロを実行する方法なのです。APIなどを使ってもありませんか。現在、ワークシートの画面をダブルクリックして、次のイベントを使っています。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Row < 36 Then
Range("B71:S71").Copy Range("B3:S3")
ActiveWindow.ScrollRow = 4 '4行
Else
Range("B36:S36").Copy Range("B3:S3")
ActiveWindow.ScrollRow = 37 '37行
End If
End Sub

投稿日時 - 2019-03-26 06:40:36

QNo.9600635

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

スクロールバーのイベントは無いと思いますので、定周期でActiveWindow.ScrollRowの変化を監視するしかないのでは?
以下の例では1秒周期でActiveWindow.ScrollRowの値を監視しています。
監視を止めるには「SampleStop」を起動してください。

Dim nPreRow As Long
Dim dOnTime As Date
Sub Sample()
  nNowRow = ActiveWindow.ScrollRow
  If nNowRow <> nPreRow Then
    If nNowRow < 36 Then
      Range("B71:S71").Copy Range("B3:S3")
      ActiveWindow.ScrollRow = 4 '4行
      nPreRow = 4
    Else
      Range("B36:S36").Copy Range("B3:S3")
      ActiveWindow.ScrollRow = 37 '37行
      nPreRow = 37
    End If
  End If
  dOnTime = Now() + TimeValue("00:00:01")
  Application.OnTime dOnTime, "Sample"
End Sub
Sub SampleStop()
  Application.OnTime dOnTime, "Sample", , False
End Sub

投稿日時 - 2019-03-26 09:17:51

あなたにオススメの質問