[[20260518190433]] 『2つの表をスクロールで移動する方法』(Excel BVA初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『2つの表をスクロールで移動する方法』(Excel BVA初心者)

どなたか教えていただけますでしょうか。Excelシート1枚に表を2つ縦に配置します。VBAを活用して表の左端のセルににカーソルを置きコマンドボタン2個を使用してカーソルが上下にスクロールするようにしたいのですが。表1つならそれぞれのコマンドボタンにOffSetコードを入力して上下に移動させますが。表2つの場合カーソルを上の表の最終行から下の表へジャンプする、また下の表の最初の行から上の表へジャンプして表中においてはスクロールさせることは可能でしょうか。

< 使用 Excel:Excel2013、使用 OS:Windows11 >


 直接的な回答ではありません。なんらかの参考になればと思います。

 VBAをわざわざ作らなくても、以下のような方法で対応できませんか?
 ・二つの表の間でウインドウを固定し、上下にウインドウを「分割」します。
 ・それぞれのウインドウ(ペインというんでしょうか)のスクロールは、
   スクロールバーでいくらも上下できるのではないですか?

 ボタン二つで上下させる方法との比較で言えば、
 (1)一回のクリックで動く量は固定的になりませんか? スクロールバーは可変です。
 (2)行き過ぎを戻すとき、違うボタンを押す必要がありますが、
    スクロールバーでは直感的に対応でき比較的容易です。

 如何でしょうか。

(xyz) 2026/05/18(月) 21:05:24


申し訳ありません。ウィンドウは1つでカーソルに上下の表の行き来をさせたいんです。ウィンドウスクロールではないです。
(Excel BVA初心者) 2026/05/18(月) 22:57:19

vbaならシート切替(一表一シートで、情報さえ何処かに有れば、削除、再構築も有^^;)のほうが楽かも
(隠居Z) 2026/05/19(火) 06:25:59

VBAは一旦置いておき、
やりたいことのイメージはこんな感じでしょうか。
例としてA1:D5の表、A11:D15の表を用意します。

>表の左端のセルににカーソルを置き とあるので、
A1:A5とA11:A15をCtrlキーを押しながら選択。
Enterキーを押すと下方へ移動、Shift+Enterキーで上方へ移動。
この動作をコマンドボタンで行いたいということで合ってますか?

(冷やし中華) 2026/05/19(火) 08:18:08


動作が不慣れかもしれないので、正しくは
A1:A5を選択した後、Ctrlキーを押しながらA11:A15を選択です。
(冷やし中華) 2026/05/19(火) 08:20:44

 2つの表の間の行を非表示にしてしまえばいいのでは?
(´・ω・`) 2026/05/19(火) 08:39:29

 どうも外していたようで失礼しました。

 「カーソルをスクロールする」というのがよくわからないのですが、
 「カーソルを移動する」ということでしょうか。
 単にCtrl+↓やCtrl+↑でジャンプしていくということではなく、
 ・カーソルが自動で下に(上に)規則的に移動していく動作を実現したい、
 ・なおかつ、ふたつの表の間は自動でジャンプするように。
 ということですか?

 そもそも、「どんな点に不便を感じて」とか、「こういう特別な目的のために」という
 説明を補足してもらうと、皆さんに明確に伝わるのではないかと思います。

(xyz) 2026/05/19(火) 08:54:27


[▲] (ボタン)
[→] (カーソル) ここが選択されている行に一致する
[▼] (ボタン)

というUIがホバーしてスクロールに応じて追尾しているっていうイメージですかね

 UIイメージがつかめておりませんが
 >表1つならそれぞれのコマンドボタンにOffSetコードを入力して上下に移動させますが。
 >表2つの場合カーソルを上の表の最終行から下の表へジャンプする、
 >また下の表の最初の行から上の表へジャンプして表中においてはスクロールさせることは可能でしょうか。

 ということなので表1つの場合はできていて
 表が複数増えたときに表の一番下から次の一番下に飛ぶような機能を追加したいのかなと思いました。

 その場合は既存の下方向に移動するコマンドボタンに

 '下方向のコマンドボタンの処理に追加 
currentRow = ActiveCell.Row
nextRow = ActiveCell.End(xlDown).Row

'表間に1行以上の隙間が開いていると仮定
If (nextRow - currentRow >= 2) And (nextRow <> Rows.Count) Then

    Cells(ActiveCell.End(xlDown).Row, ActiveCell.Column).Select
 Else
   '元の移動処理
 End If

 を差し込めばいいのではないでしょうか。
 全然違ったらごめんなさい
(ちくわ) 2026/05/19(火) 09:36:27

表のジャンプだけなら名前ボックスを利用する手もありますね。
(東九) 2026/05/19(火) 11:21:19

 ひとつずつ移動していく意味が見出せませんが、こういうことですか?

 Sub testDown()
     Dim rng As Range
     Dim tmp As Range

     Set rng = ActiveCell
     Set tmp = rng.Offset(1)
     If tmp = "" Then
         Set rng = rng.End(xlDown)
     Else
         Set rng = tmp
     End If
     rng.Select
 End Sub

 でも、普通は ↓ や ctrl+↓ で済む話なので、マクロにする必要も乏しい気がします。
(xyz) 2026/05/19(火) 11:59:04

 空白セルをジャンプして次の行を選択するのではどうでしょう

 Sub DownActiveCell()
    ActiveCell.EntireColumn.Find("*", After:=ActiveCell).Select
 End Sub

 Sub UPActiveCell()
   ActiveCell.EntireColumn.Find("*", After:=ActiveCell, SearchDirection:=xlPrevious).Select
 End Sub
(´・ω・`) 2026/05/19(火) 12:01:04

横からですが、もしかしてこういうことでしょうか?

【仕様】
表1つならそれぞれのコマンドボタンにOffSetコードを入力して上下のセルを選択させます。
上記を応用して
表2つの場合カーソルを上の表の最終行から下の表の(1行目)へジャンプする、
また下の表の最初の行から上の表(の最終行)へジャンプ
というように改造する

    Sub 下移動()
        Dim 表範囲1 As Range, 表範囲2 As Range
        Set 表範囲1 = Worksheets("Sheet1").Range("B2:E5")
        Set 表範囲2 = Worksheets("Sheet1").Range("B9:E12")

        If Intersect(ActiveCell, 表範囲1.Rows(表範囲1.Rows.Count)) Is Nothing Then
            ActiveCell.Offset(1).Select
        Else
            ActiveSheet.Cells(表範囲2.Row, ActiveCell.Column).Select
        End If
    End Sub
 ----------------------------------------------------------------
    Sub 上移動()
        Dim 表範囲1 As Range, 表範囲2 As Range
        Set 表範囲1 = Worksheets("Sheet1").Range("B2:E5")
        Set 表範囲2 = Worksheets("Sheet1").Range("B9:E12")

        If Intersect(ActiveCell, 表範囲2.Rows(1)) Is Nothing Then
            ActiveCell.Offset(-1).Select
        Else
            ActiveSheet.Cells(表範囲1.Row + 表範囲1.Rows.Count - 1, ActiveCell.Column).Select
        End If
    End Sub

(もこな2) 2026/05/19(火) 12:57:00


残念ながらトピ主からの反応がないので。理解が正しいか不明ですが、例えば表の部分だけロックを外した状態で、「ロックされたセルの範囲の選択」のチェックを外してシート保護すれば、カーソルキーだけで希望の動作になるんじゃないでしょうか?

(もこな2) 2026/05/20(水) 19:00:26


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.