質問者
VBAでシートをコピーしたとき、別シートがスクロールする

質問
-
EXCEL2013での現象です。
VBAでシートA上のボタンクリックで、シートBをコピーしてシートCにデータを出力するプログラムを組んでいます。最終的にシートCがアクティブになったとき、マウスのホイールで画面をスクロールしようとすると、シートCは全く動かず、シートAがスクロールされてしまいます。
一度、別シートを選択してからシートCに戻ると、普通にスクロールします。シートCはウィンド枠の固定をしたり、スクロールロックはしていません。
また、VBAで別シートを選択(.Select または .Activate)して、シートCを選択(.Select または .Activate)しても、同様です。シートCでセルのフォーカスを移動しても、変わりませんでした。
回避方法についてご教授お願いします。
すべての返信
-
環境が見えませんでした。
1つの Excel ファイルにあるシート3枚についてのコピペ処理でしょうか?
それとも、1Excel 1シートで、3つの Excel ファイルを操作されてのコピペ処理でしょうか?
前者だとすると、vba の最後の処理でシートCを選択表示していて、スクロールしてもまったく動かず、シートAをクリックして見てみるとスクロールされている、ということでしょうか?
後者だとすると、ウィンドウを整列させて、並べて表示されている状態での、今回のご質問(現象)でしょうか?
【シートBをコピー】というのは、シート自体のコピーではなく、シートに記載されたデータ自体のコピペで合っていますか?
理解できず、すみません。
-
私は Office 2013 を持っていないので Office 2010 での確認ですが、私の環境では再現できませんでした。
もし、現象が出るソースコード(の説明用の再現版)を拝見できれば、問題個所を調べられるかもしれません。
試してみたソースコード
フォームコントロール版のボタンクリック、ActiveX 版のボタンクリックで確認しましたが、私の環境だと現象は出ませんでした。
Office 2010
以下は、フォームコントロールのボタンを配置して、クリックした際の処理内容です。
ActiveX コントロールのボタンでも、同じ処理内容で確認しています。
--
' フォームコントロール、ボタンのクリック
Sub ボタン1_Click()
' Sheet2シート(シートBのつもり)のセルの値を、Sheet3シート(シートCのつもり)にコピペ
Worksheets("Sheet2").Range("A1").Copy Worksheets("Sheet3").Range("A1")
' Sheet3シートを表示
Worksheets("Sheet3").Select
End Sub -
拝見させていただいたソースを試してみましたが、現象が出ませんでした。
・ActiveSheet.ScrollArea の初期化
excel 2010 can not scroll down on the worksheet
https://social.technet.microsoft.com/Forums/ie/en-US/1d6338ab-1675-4205-a3c2-9dfa009d42a3/excel-2010-can-not-scroll-down-on-the-worksheet?forum=excel
英語のサイトです。
上記によると、Visual Basic Editor を開いて、イミディエイトウィンドウを開いて、
ActiveSheet.ScrollArea = ""
と入力してエンターを押すことで、スクロール領域の制限を解除できるみたいです。
後は、こちらもダメもとで、ご確認されましたでしょうか。
・わざと、ウィンドウ枠の固定を有効にした後、解除する
・わざと、キーボードの Scroll Lock をオンにして、オフにする
その Excel ファイルだけが現象発生しますでしょうか、それとも新規作成した別 Excel ファイルでも同様に現象発生しますでしょうか。
以下は類似の記事ですが、ユーザーフォームもピポットテーブルも使われていないので、関係無いですよね。
・ユーザーフォームを使っている場合
ユーザーフォームからシートを移動すると、画面がロックされたようになる。
http://www.excel.studio-kazu.jp/kw/20140307175712.html
→モードレスで表示することで解決した
・ピポットテーブルを使っている場合
Excel 2013 VBA でスクロールできなくなる
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12148188847
→ピポットテーブルの無いシートを選択したらスクロールできるようになった