- 締切済み
エクセル画面のちらつきなくすには?
エクセルVBAでユーザーフォームのボタンをクリックして、シート間でデータをコピーしたり貼り付けたりする作業を数百回繰り返したプログラムを作ったのですが、Application.ScreenUpdating=false を使っても画面のちらつきをおさえられません。シートが変わるときとか貼り付けしてセルの行が下がっているときとか、チラチラチラチラと作業の進行具合がディスプレイにでてきます。画面が静かなままバックで作業をさせたいのですが、無理なのでしょうか?どなたかご存知の方ご教授お願いいたします。
- ityounomi
- お礼率78% (142/181)
- Visual Basic
- 回答数1
- ありがとう数5
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Nayuta_X
- ベストアンサー率46% (240/511)
下記で、出来ますが、 Application.ScreenUpdating = False '画面の変更を表示しない。 処理 1 処理 2 処理 3 処理 4 処理 5 ・ ・ ・ Application.ScreenUpdating = True '画面を最新の状態にする。 この後にも、画面のちらつきの原因になるものが、あるのでは??。
関連する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 を記述しているにもかかわらず、画面が遷移してしまいます。 どなたかわかる方、ご教授願います。
- 締切済み
- その他MS Office製品
- Application.ScreenUpdating=Falseを使うと・・・。
VBAでユーザーフォームを表示させ、コマンドボタンを押すと ユーザーフォームを閉じて処理を開始すると言う設定をしているのですが ここにApplication.ScreenUpdating=Falseを追加すると ユーザーフォームが閉じずに処理を行なってしまいます。 (最後まで開いたまま) コマンドボタンのクリックイベントの最初にUserForm1.hideと入れ、その後にApplication.ScreenUpdating=Falseを入れた後に 行なう処理を書いているのですが、どこか間違っていますでしょうか? お教え下さい。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- excel 全画面表示
EXCEL 全画面モードにしたとき通常Aになり[…]をクリックするとリボンが表示され編集が出来るのですが、VBAで全画面にするとBのようになり編集ができません。AになるようなVBAコマンドをご教示いただきたい。 BになるVBA コマンド ActiveWindow.WindowState = xlMaximized Application.DisplayFormulaBar = False ActiveWindow.DisplayHeadings = False Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
- ベストアンサー
- Excel(エクセル)
- 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")を指定する方法を 教えて下さい!!
- ベストアンサー
- オフィス系ソフト
お礼
ご教授ありがとうございました。原因を突き止めました。サブルーチンの中にもApplication.ScreenUpdating = False をあっちこっち入れていたための現象でした!どうもありがとうございました!