• 締切済み

エクセル画面のちらつきなくすには?

エクセルVBAでユーザーフォームのボタンをクリックして、シート間でデータをコピーしたり貼り付けたりする作業を数百回繰り返したプログラムを作ったのですが、Application.ScreenUpdating=false を使っても画面のちらつきをおさえられません。シートが変わるときとか貼り付けしてセルの行が下がっているときとか、チラチラチラチラと作業の進行具合がディスプレイにでてきます。画面が静かなままバックで作業をさせたいのですが、無理なのでしょうか?どなたかご存知の方ご教授お願いいたします。

みんなの回答

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.1

下記で、出来ますが、 Application.ScreenUpdating = False '画面の変更を表示しない。 処理 1   処理 2   処理 3   処理 4   処理 5    ・    ・    ・ Application.ScreenUpdating = True '画面を最新の状態にする。  この後にも、画面のちらつきの原因になるものが、あるのでは??。

ityounomi
質問者

お礼

ご教授ありがとうございました。原因を突き止めました。サブルーチンの中にもApplication.ScreenUpdating = False をあっちこっち入れていたための現象でした!どうもありがとうございました!

関連するQ&A

  • エクセル2000VBA コマンドボタンがうまく動きません

    こんにちは、VBA初心者です。 2枚のシートがあり、「入力」というシートの任意のセルを、「出力」という別シートにコピーするという作業をコマンドボタンによって行いたいと思っています。 自分で作ってみたものは、このようになります。 Private Sub 任意の行のコピー・印刷_Click() Application.ScreenUpdating = False 'セル内容コピー Selection.Copy Sheets("出力").Select Range("A9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("入力").Select ActiveCell.Offset(0, 1).Select Application.CutCopyMode = False Selection.Copy Sheets("出力").Select Range("C9").Select (以下略) ところが、これだと 「実行時エラー1004 RangeクラスのSelectメソッドが失敗しました」と表示され、デバッグをかけると6行目のRange("A9").Selectが黄色く反転した状態になります。 どうしてでしょうか。 同じ内容のものをマクロで登録し、実行すると、何の問題もなく動くのですが… ほとほと困っております。 どうかよろしくお願いします。

  • 画面のちらつきを無くす

    よろしくお願いします。 1:シート上のセルからユーザーフォーム(フォームあ)を開く。 2:ユーザーフォームには、リストボックスが3つあります。   (リスト1、リスト2、リスト3)  リスト1から項目を選択、次にリスト2を選択した時と、リスト3を  選択したときに、画面がちらつきます。 このチラつきがないように、出来ないでしょうか。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)   If Target.Row > 4 And Target.Row < 233 And Target.Column > 5 And Target.Column < 7 Then   フォームあ.Show vbModeless   Else    Unload フォームあ   End If End Sub Private Sub リスト1_Click()  Application.ScreenUpdating = False   With リスト1ActiveCell.Offset(0, 0).Activate    ActiveCell.Value = .List(.ListIndex, 0)    ActiveCell.Offset(0, 0).Value = .List(.ListIndex, 0)     ActiveCell.Offset(0, 0).Activate   End With  Application.ScreenUpdating = True End Sub Private Sub リスト2_Click()  Application.ScreenUpdating = False   With リスト2    ActiveCell.Offset(0, 3).Activate    ActiveCell.Value = .List(.ListIndex, 0)    ActiveCell.Offset(0, 0).Value = .List(.ListIndex, 0)     ActiveCell.Offset(0, -3).Activate   End With  Application.ScreenUpdating = True End Sub Private Sub リスト3_Click()  Application.ScreenUpdating = False   With リスト3    ActiveCell.Offset(0, 3).Activate    ActiveCell.Offset(1, 0).Activate    ActiveCell.Value = .List(.ListIndex, 0)    ActiveCell.Offset(0, 0).Value = .List(.ListIndex, 0)     ActiveCell.Offset(-1, 0).Activate     ActiveCell.Offset(0, -3).Activate   End With  Application.ScreenUpdating = True End Sub

  • エクセルで空白のセルを探して貼り付け

    エクセルVBAでSheet2の指定のセルをコピーして、 Sheet1にある表の中の指定の列の空白セルを探して貼り付けるVBAを作成したいのですが、うまく出来ません。 Sheet1の表は1行目、2行目は見出しの項目が並んでいます。 3行目から50行目までは値を入力するようになっていて、 51行目はそれらをの集計が表示されるようになっています。 下記のVBAを作成したら3行目~50行目までの空欄に貼り付けず、 52行目に貼り付けてしまいます。 ----------------------------------------------------------- Sheets("Sheet2").Range("B6").CurrentRegion.Copy Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Offset(1).PasteSpecial xlPasteValues Application.CutCopyMode = False ------------------------------------------------------------ 修正して頂けないでしょうか? 宜しくお願いします。

  • EXCEL VBAでブックを開いても遷移したくない

    EXCEL VBAでWorkbooks.Openを使ってブックをオープンしていますが、 Application.ScreenUpdating = False を記述しているにもかかわらず、画面が遷移してしまいます。 どなたかわかる方、ご教授願います。

  • Application.ScreenUpdating=Falseを使うと・・・。

    VBAでユーザーフォームを表示させ、コマンドボタンを押すと ユーザーフォームを閉じて処理を開始すると言う設定をしているのですが ここにApplication.ScreenUpdating=Falseを追加すると ユーザーフォームが閉じずに処理を行なってしまいます。 (最後まで開いたまま) コマンドボタンのクリックイベントの最初にUserForm1.hideと入れ、その後にApplication.ScreenUpdating=Falseを入れた後に 行なう処理を書いているのですが、どこか間違っていますでしょうか? お教え下さい。よろしくお願いします。

  • マクロ 画面を固定

    マクロのはじめに Application.ScreenUpdating = False を入れると画面が固定されてマクロが実行されると思うのですが これはPCに負担をかけますか? Application.ScreenUpdating = False をいれないでマクロを実行するときのほうが何度も画面が切り替わって PCに負担がかかってる感じがするのですが実際どうでしょうか? よろしくお願いします。

  • excel 全画面表示

    EXCEL 全画面モードにしたとき通常Aになり[…]をクリックするとリボンが表示され編集が出来るのですが、VBAで全画面にするとBのようになり編集ができません。AになるようなVBAコマンドをご教示いただきたい。  BになるVBA コマンド ActiveWindow.WindowState = xlMaximized Application.DisplayFormulaBar = False ActiveWindow.DisplayHeadings = False Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"

  • VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。

    マクロを含むエクセル(EXCEL2000)をHTMLのページからハイパーリンクで呼び出しています。そのエクセルでボタン操作に従い罫線やセルの着色を行っています。しかし、着色結果が更新されません。スクロールバー等で画面を移動すると正しく着色されています。このエクセルを通常に起動した場合は、問題なく動作するのですが、シート全体を更新する方法を教えて下さい。 各関数では、以下のスクリーンアップデータの処理を入れています。 Application.ScreenUpdating = False     (処理) Application.ScreenUpdating = False

  • マクロ 画面更新の停止

    マクロを実行すると、画面がチカチカするため、更新を停止したいと思います。 画面更新を停止 Application.ScreenUpdating = False 画面更新を再開 Application.ScreenUpdating = True は、わかるのですが、 どこにどのように入れたらよいのかわかりません。 一応、たくさんのマクロを作って、下記のようなマクロで一気に実行しています。 このマクロを実行した時に、画面がチカチカしないようにしたいです。 分かる方おりましたら、お願いいたします。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ Sub マクロ実行() Call 摘要を削除 Call 摘要を削除する作業をすべてのシートで行う Call 集計シートを作る Call 集計 Call 集計シートをアクティブにする Call 戻るボタン設置 Call ボタン設置 End Sub

  • Excel VBAで検索をするには

    他シートのセル位置を指定して、その言葉をキーワードに 検索をかけて、該当列の列数を取得しようと思っております。 他シートのセル位置の指定の仕方がわかりません。。 言葉指定の検索は下記の通りできました。 Dim i As Integer Application.ScreenUpdating = False '2行目で検索 i = Range("IV2").End(xlToLeft).Column To 1 Step -1 If InStr(Cells(2, i).Value, "$金額$") > 0 Then '列数取得  ・   ・ End If Application.ScreenUpdating = True ここまで。 $金額$の場所に、他シートのRange("A1")を指定する方法を 教えて下さい!!

専門家に質問してみよう