Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
画面のちらつき防止
投稿日時: 21/03/20 10:37:35
投稿者: 山下 弘
メールを送信

現在VBAでソフトを作っているのですがコピーしてペーストすると画面がちらつきます
ちらつき防止方法を教えて下さい

回答
投稿日時: 21/03/20 13:02:48
投稿者: WinArrow
投稿者のウェブサイトに移動

Application.ScreenUpdating = False
という方法もありますが、
シートやセルをActiveにしないようなコード棟見合わせると
効果が期待できるので
 
実際のコードを掲示してみてください。

投稿日時: 21/03/20 13:29:23
投稿者: 山下 弘
メールを送信

ご返事ありがとうございます
Application.ScreenUpdating = False
を使っているのですが ちらつきます
何か良い方法がございましたら教えていただけると助かります

回答
投稿日時: 21/03/20 15:31:15
投稿者: WinArrow
投稿者のウェブサイトに移動

回答者はあなたのPC画面は見えません。
回答者にも見えるような説明をしないと
分かってもらえないのでは?
 
再掲
 
実際のコードを掲示してみてください。
 
 

投稿日時: 21/03/20 18:34:31
投稿者: 山下 弘
メールを送信

お返事ありがとうございます
説明不足で申し訳ありませんでした
今 車検の予約ソフトを作っております
予約日報 最初の画面を連動させyぷとして
コピーしてペーストすると画面がちらつきます
    Application.ScreenUpdating = False
    Workbooks("Yoyaku.xlsm").Activate
    Worksheets("D1").Activate
    Worksheets("D1").Range("A1:IV50").Select
    Selection.Copy
         
    Workbooks.Open ActiveWorkbook.Path & "\Y1.xlsm"
    Workbooks("Y1.xlsm").Activate
    myHenkoMonth = 1
    HenkoAll2 '() '全体新規 シート選択
    Workbooks("Y1.xlsm").Close True
    よろしくお願いいたします

回答
投稿日時: 21/03/20 20:30:26
投稿者: WinArrow
投稿者のウェブサイトに移動

OSのバージョン、Excelのバージョンが選択してありませんが、
Excel2013以降ですよね?
 
Excel2013以降は、画面の制御が大きく変わりました。
簡単にいうと、それまでは、複数ブックを開いてもウィンドウは1つ
だったが、Excel2013以降は、ブックごとにウィンドウが作成されます。
 
従って、ブックをActivateするたびにウィンドウが入れ替わる現象が
ちらつきにつながります。
 
対策は、ブック、シート、セルをActivateやSelectしないコーディングに徹することです。
 
複写操作は、Activate、Selectしなくてもほとんどの場合、処理できます。
 
例えば
BookAのSheet2のセル範囲(G1:H20)を
BookBのSheet1のセル範囲(A1:B20)に複写する場合
 

Dim BookA As Workbook, BookB As Workbook
    
    Set BookA = Workbooks("BookA")
    Set BookB = Workbooks("BookB")
    
    With BookA
        .Sheeets("Sheet2").Range("G1:H20").Copy _
            Destination:=BookB.Sheets("Sheet1").Range("A1:B20")
    End With

 
処理速度も改善されます。
 

投稿日時: 21/03/21 09:05:10
投稿者: 山下 弘
メールを送信

ありがとうございました
早速ためさせて頂きます
大変助かりました

投稿日時: 21/03/21 15:34:02
投稿者: 山下 弘
メールを送信

おかげさまで助かりました
ありがとうございます