縦のスクロールバーをクリックまたは移動した際に、回答のマクロを実行する方法はありますか?

このQ&Aのポイント
  • 現在、ワークシートの画面をダブルクリックして次のイベントを使って回答のマクロを実行しています。
  • しかし、APIなどを使用する方法は存在するのでしょうか?
  • また、縦のスクロールバーをクリックまたは移動した際にマクロを実行するための方法があれば教えてください。
回答を見る
  • ベストアンサー

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

質問は、縦のスクロールバーをクリックまたは移動したとき、回答のマクロを実行する方法なのです。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

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.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

関連するQ&A

  • 同じシート内にイベントプロシージャが二つある時

    いつもお世話になります。 WINDWS7 EXCELL2010 です。 下記の1 2のマクロを同じシート内にイベントプロシージャを二つ挿入したところ、 ※1 ※2のような現象が起きました。 この現象を解決したくご指導を仰ぎたいです。 宜しくお願いします。 ※1 エラー表示 コンパイルエラー: 名前が適切ではありません; Worksheet_BeforeDoubleClick ※2 下記の構文が青色に反転 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 1 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A2:A51")) Is Nothing Then Exit Sub Cancel = True Sheets(CStr(Target.Value)).Select End Sub 2 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim myRange As Range Set myRange = Intersect(Target, Range("B2:B51")) If Not myRange Is Nothing Then Select Case Target.Value Case "" Target.Value = "○" Case Else Target.ClearContents End Select Cancel = True End If End Sub

  • どこが間違ってますか? (エクセルVBAです)

    質問をご覧くださりありがとうございます。 どなたか助けていただけないでしょうか。 以下のコードの場合、B2セルをダブルクリックすればシート(1)が開くと思っていたのですが、B2以外のセルをダブルクリックしてもシート(1)が開いてしまいます。 どこが悪いのでしょうか。 詳しい方がいらっしゃいましたら、どうか教えてください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean) If Target = Range("B2") Then cancel = True Worksheets("シート(1)").Activate End If End Sub どうか、宜しくお願いいたします。

  • エクセル VBA について

    エクセルで、 ダブルクリックしたら"*"を表示したい範囲に【入力】という名前をつけ、 ダブルクリックしたら9つ左のセルの内容を表示したい範囲に【金額】という名前をつけ、 二つの構文?をVisual Basicに作成したんですが、エラーが出てしまいます。 ひとつずつだと上手くいくのですが、なぜでしょうか? わかる方教えてください。 あと申し訳ないのですが、VBAはまったくわからないため、ネット上で構文をコピーして貼り付けました。 そんな者でもわかる修正の説明をお願いいたします。 以下が作成し、エラーとなってしまう構文です。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "金額" If Target.Value = "" Then Target.Value = Target.Offset(0, -9).Value Cancel = True End If End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "入力" If Not Intersect(Range(RangeName), Target) Is Nothing Then Cancel = True If Target = "*" Then Target = "" Else Target = "*" End If End If End Sub

  • VBA ダブルクリックで行に色をつける方法

    VBAでダブルクリックしたセルを含む行に色をつけたいです。 セルに色をつけるマクロは書いた(下記)のですが、これを行全体に色付けしたいのですが、 うまくいきません。 どなたかご教授ください。 Private Sub Worksheet_BeforeDoubleClick _ (ByVal Target As Range, Cancel As Boolean) If Not Application.Intersect _ (Target, Range("A3").CurrentRegion) _ Is Nothing Then With Target.Interior If .Color = vbRed Then .Color = xlNone Else .Color = vbRed End If End With Cancel = True End If End Sub よろしくお願いします。

  • エクセル2003でダブルクリック処理でエラーをしてしまう

    エクセルのシートAからZまであります 一部計算式が入っているのデーター処理が終了後に ダブルクリックでコピー&値の貼り付けで式をなくしていますが 列の一部とフィルターをかけると処理ができずにエラーをしてしまい 対処方法が分かりません 初心者でエラーの意味すら分からないのですが選択した領域と 貼り付ける領域が違うようなのです どこを直せばよいのか教えて下さい。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) Dim RangeName As String RangeName = Target.Address RangeName = Mid(RangeName, 2, 1) If RangeName = "Z" And Target = "" Then Target = "OK" Range(Cells(Target.Row, 1), Cells(Target.Row, 27)).Copy ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 Range(Cells(Target.Row, 1), Cells(Target.Row, 27)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 End If End Sub 宜しくお願いします。

  • エクセルVBA ダブルクリックした左隣の値を返す方法

    いつもお世話になっております。 あるワークシートにおいて、 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _ Cancel As Boolean) If ActiveCell.Column = 7 Then Target.Value = "希望" End If End Sub というマクロを記述することができました。 今度は、 G列のどこかのセルをダブルクリックすると、 同じ行のE列の値が、 ダブルクリックしたセルに入るようにしたいのです。 どのような記述をすればよいのか ご教示ください。

  • Private Sub Worksheet_BeforeDoubleC

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column = 4 Then Target.Value = Date End If If Target.Column = 5 Then Target.Value = Date End If End Sub これは、他の方の回答で4列と5列のどこかをダブルクリックすると日付が入力されました。 しかし、シートの保護を入れるとダブルクリックしても入力されません。 それで、例えば、B3セルとかC3セルとかの特定のセルをダブルクリックすると日付が入力されるようにできませんか?宜しくお願いします。

  • Excel2007 マクロについて

    たとえばですが sheet1のF5列をダブルクリックすると、その左側にあるA5の値をコピーし sheet2のA列の未入力行へ貼り付けするにはどうしたらよいでしょうか Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, cancel As Boolean) If Intersect(Target, Range("F:F")) Is Nothing Then Exit Sub cancel = True End Sub とりあえずここまで作って開くことは開いたのですが、その先がわからず困っております。 よろしくお願いいたします。

  • エクセル VBA ユーザーフォームの表示

    excel2000にてシートのB列のみで65行目以下をWクリックするとユーザーフォームが表示されるというコードを教えてください。 以下は調べたりした結果のコードです。B列をWクリックすると表示される状態です。 B60とかをクリックしても表示されないようにしたいです。 Worksheetのコード Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True If Target.Column = 2 Then 'B列なら   行 = Target.Row '行番号を取得する   UserForm1.Show 'ユーザーフォームを表示する End If End Sub 標準モジュールのコード Option Explicit Public 行 As Variant '行番号 Sub auto_open() Load UFnyuuryoku 'ユーザーフォームをメモリに読み込む End Sub ご存知の方よろしくお願いします。

  • 型が一致しません

    特定のセルでダブルクリックすると「〇」が入り,再度ダブルクリックすると「〇」が消えるコードを調べ,以下のものです。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const rng As String = "A1:B3" '処理対象のセル範囲 If Not Application.Intersect(Target, Range(rng)) Is Nothing Then If Target.Value = "" Then Target.Value = "○" Else Target.ClearContents End If End If End Sub 試してみましたが,「実行時エラー13 型が一致しません」というものが出て,デバックというところをクリックすると,If Target.Value = "" Thenのところが黄色くなり矢印が出ていたのでここが問題かなと思うのですが,どのように修正すればいいのか分かりません。教えていただけると助かります。

専門家に質問してみよう