none
VBAでシートをコピーしたとき、別シートがスクロールする RRS feed

  • 質問

  • EXCEL2013での現象です。

    VBAでシートA上のボタンクリックで、シートBをコピーしてシートCにデータを出力するプログラムを組んでいます。最終的にシートCがアクティブになったとき、マウスのホイールで画面をスクロールしようとすると、シートCは全く動かず、シートAがスクロールされてしまいます。

    一度、別シートを選択してからシートCに戻ると、普通にスクロールします。シートCはウィンド枠の固定をしたり、スクロールロックはしていません。

    また、VBAで別シートを選択(.Select または .Activate)して、シートCを選択(.Select または .Activate)しても、同様です。シートCでセルのフォーカスを移動しても、変わりませんでした。

    回避方法についてご教授お願いします。

    2018年3月16日 0:12

すべての返信

  • 環境が見えませんでした。

    1つの Excel ファイルにあるシート3枚についてのコピペ処理でしょうか?
    それとも、1Excel 1シートで、3つの Excel ファイルを操作されてのコピペ処理でしょうか?

    前者だとすると、vba の最後の処理でシートCを選択表示していて、スクロールしてもまったく動かず、シートAをクリックして見てみるとスクロールされている、ということでしょうか?
    後者だとすると、ウィンドウを整列させて、並べて表示されている状態での、今回のご質問(現象)でしょうか?

    【シートBをコピー】というのは、シート自体のコピーではなく、シートに記載されたデータ自体のコピペで合っていますか?

    理解できず、すみません。


    2018年3月18日 8:32
  • 前者です。

    1つのブック上の話で、シートBはデータ表示枠のテンプレートであり、シートCはシートBをコピーして、実データを表示するためのシートになります。

    おっしゃる通り、vba の最後の処理でシートCを選択表示していて、スクロールしてもまったく動かず、シートAをクリックして見てみるとスクロールされている、ということです。

    2018年3月19日 4:18
  • 私は 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
    2018年3月19日 5:23
  • すみません、コピーはセルコピーではなく、シートコピーなので、ソースは以下になります。

     Sheets("Sheet2").Visible = True
     Sheets("Sheet2").Copy after:=Sheets("Sheet1")
        ActiveSheet.Name = "Sheet3"
     Sheet("Sheet2").Visible = False

    その後、Sheet3にデータを展開し、最後にSheet3がアクティブになります。

     

    2018年3月19日 8:35
  • 拝見させていただいたソースを試してみましたが、現象が出ませんでした。


    ・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
    →ピポットテーブルの無いシートを選択したらスクロールできるようになった
    2018年3月19日 15:09