AIと戦って、あなたの人生のリスク診断 >>

お世話になります。

エクセルのVBAを使って、あるセルを選択コピーして
別のセル(画面外)にペーストする時、
貼り付けるセルをアクティブ化させるために(選択するために)、
画面が移動してしまいます。

というのは、「選択コピーのセル」と「貼り付けセル」が離れているためでして、
100回ぐらいコピペを繰り返すため、画面がめまぐるしく動いて困ってしまいます。
コピペの最中に、最初の「選択コピーのセル」が表示されている画面で
留めておく方法はないものでしょうか?

どなたかどうぞご教授下さい。m(_ _)m

このQ&Aに関連する最新のQ&A

A 回答 (2件)

画面を止めたいところに



Application.ScreenUpdating = False

を入れ、終ったところで

Application.ScreenUpdating = True

のコードを入れます。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
画面が動かなくなり、処理速度がぐっと速くなりました。

ありがとうございました。

お礼日時:2007/11/09 13:43

http://www.relief.jp/itnote/archives/001259.php

↑こういうのがありました。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
便利なサイトを紹介して頂いて感謝です。

おかげで画面を止めることができました。

ありがとうございました。

お礼日時:2007/11/09 13:48

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qエクセル関数で日付かどうかの確認?

ワークシート関数でセル内が日付かどうか調べるものはないでしょうか?
VBAのIsDateなら存じておりますが。

Aベストアンサー

日付を表すデータは、セルの値としては、単なる数値なのですが、どういう種類のセルの書式が設定されているかを調べることはできます。
調べたいセルがA1だとして
=cell("format",A1)

"D1"になれば概ね日付だと判別できます。
時刻を含めたものにする場合は、
Dで始まることをチェックすればいいかも。
詳しくは、CELL関数のヘルプを参照してください。

Q【Excel】複数のマクロをまとめることはできますか?

Excel2003を使用していて、マクロを勉強しています。
先日、ここで質問させていただきながら、ある一覧表を作成するために
マクロを作りました。
このマクロを実行してできた一覧表に、さらにこういう操作をしたい
というのがいくつかでてきて、その度にマクロを作ったり
マクロの記録を使用したりして、結局、この一覧表に関するマクロが
5つもできてしまいました。
そこで、質問なのですが、この5つのマクロをまとめることって
できるのでしょうか?

Aベストアンサー

できますよ。

例えば、マクロ名が「aaa」、「bbb」、「ccc」だった場合、
Sub Macro1()
aaa
bbb
ccc
End Sub

というVBAを作ればその3つのマクロがまとめて実行されるマクロになります。

このマクロをボタンでも作って、押したら呼び出すように設定すれば更に便利になりますよ。

QEXCELのVBAでのSelectとActivateの違い

VBAの初心者です。
ExcelのVBAでメッセージを表示してシートを切換えるというのを作りたいのです。
見真似で作成したのが↓です。


Dim rtn As String
rtn = MsgBox("シートを切換えますか", vbYesNo, "シートの切替")
If rtn = vbYes Then
Worksheets("送付先一覧").Activate
Range("a1").Select

Else
Exit Sub
End If

動作確認はできましたが、上記の「Activate」を「Select」に変更しても特に動作異常がありません。
そこで、疑問ですが、「Activate」と「Select」ってどうやって使い分けるのでしょうか?

Aベストアンサー

こんにちは。

通常は、シートもセルも Select でよいと思います。
選択して、扱えるようにするということだと思います。

#2さんも述べておりますが、Activate って、ひとつを選ぶことですね。でも、なぜか、Activate は、ほとんど使いません。

たぶん、Select は、選択した後に、その選択したものを、そのままオブジェクトとして確保して使えるので便利だから選ばれるのかもしれません。

Select → Selection
として使えます。

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Q指定のWORKBOOKを前面表示する方法(エクセル:VBA)

いつもお世話になっております。
エクセルにて処理が終了した時点で、VBAを使い自動的にメールを送るマクロを組みました。しかし、ユーザーからのリクエストにより、自動送信する前にメール内容を確認したいとのことで、一度このメール内容でOKかどうか聞いてから、送信するように書き換えました。そのMsgBoxは当然エクセル上に現れるのですが、特にシングルディスプレイユーザーの場合、送信用のメールが前面に出てしまい、エクセル上に表示されたMsgBoxに気が付かない人もいますので、送信用メールが作成されたら、エクセルを前面に出してMsgBoxの指示に従わせたいのですが、どう書けばいいのか分かりません。とりあえず、私がトライしてみた文字ールは下記のとおりですが、エクセルは前面には出ません(ただし、エクセルプログラム全体が点滅?しますが)。
~前略~

With myMail
.To = "abc@xxxxx.com"
.Cc = "123@xxxxx.com"
.Subject = Filename '指定済みです
.Body = strBody '指定済みです
.display '.sendの代わりにいったんここで表示させました
End With

Windows("XYZ.xls").Activate 'このワークブックで作業をしてます。全面にはでてきません。

mymsg = MsgBox("このメール内容で送信してもよろしいですか?"~中略~,vbYesNo + vbQuestion, "送信確認")
If mymsg = 6 Then
myMail.send

~後略~

いつもお世話になっております。
エクセルにて処理が終了した時点で、VBAを使い自動的にメールを送るマクロを組みました。しかし、ユーザーからのリクエストにより、自動送信する前にメール内容を確認したいとのことで、一度このメール内容でOKかどうか聞いてから、送信するように書き換えました。そのMsgBoxは当然エクセル上に現れるのですが、特にシングルディスプレイユーザーの場合、送信用のメールが前面に出てしまい、エクセル上に表示されたMsgBoxに気が付かない人もいますので、送信用メールが作成された...続きを読む

Aベストアンサー

Windows("XYZ.xls").Activate
のところに
VBA.AppActivate Excel.Application.Caption
を追加してみてください。

QエクセルVBAでフィルタ抽出部分のみのコピー

エクセルVBAで売上帳を作成していますが、オートフィルタでデータ抽出した後、表示されている行のみをコピーして別シートに貼りつけるにはどうすればよいのでしょう?

別シートは指定したセルに値のみの貼り付けをしたいと思っています。

宜しくお願いします。

Aベストアンサー

こんにちは
マクロの記録で作成した一例です。コメントを読んで、適当にアレンジして下さい。

Option Explicit
Sub SampleMacro1()
'
' SampleMacro1 Macro
' マクロ記録日 : 2009/3/13
'
 'フィルター部分
 Selection.AutoFilter Field:=1, Criteria1:="=ほげほげ", Operator:=xlAnd
 '可視セルの選択
 Selection.SpecialCells(xlCellTypeVisible).Select
 '選択範囲のコピー
 Selection.Copy
 'コピー先のシート&セル選択
 Sheets("Sheet2").Select
 Range("A1").Select
 'ペースト
 ActiveSheet.Paste
 'コピー元シートに戻りコピー状態解除
 Sheets("Sheet1").Select
 Application.CutCopyMode = False
 Range("A1").Select
End Sub

外してたら、ごめんなさい

こんにちは
マクロの記録で作成した一例です。コメントを読んで、適当にアレンジして下さい。

Option Explicit
Sub SampleMacro1()
'
' SampleMacro1 Macro
' マクロ記録日 : 2009/3/13
'
 'フィルター部分
 Selection.AutoFilter Field:=1, Criteria1:="=ほげほげ", Operator:=xlAnd
 '可視セルの選択
 Selection.SpecialCells(xlCellTypeVisible).Select
 '選択範囲のコピー
 Selection.Copy
 'コピー先のシート&セル選択
 Sheets("Sheet2").Select
 Range("A1").Select
 'ペース...続きを読む

Qエクセルマクロで変数を使ったセル範囲指定

Dim x As Long
Dim y As Long
として

x = Range("A1").End(xlDown).Row
For y = 1 To x
としました。

このときRange("A" & y)からRange("A" & x)を範囲指定したいときは
どのように記述すればよいのでしょうか?

Aベストアンサー

次のようにすればよいでしょう。

Sub セルの範囲指定()
Dim x As Long
Dim y As Long
x = Range("a1").End(xlDown).Row
For y = 1 To x
Range(Range("A" & y), Range("A" & x)).Select
Next
End Sub

QVBA セルにSUM関数を相対参照で埋め込む時に変数を使用したい

VBAを使用して、セルに相対参照でSUM関数を仕込もうと考えています。

Cells(goukei_start_row, 10) = "=SUM(R11C10:R" & goukei_start_row - 1 & "C" & 10 & ")"

上記でやると、絶対参照で =SUM($J$11:$J$43) となってしまうのですが、
$を付けず=SUM(J11:J43)のような形にするにはどうすればよいのでしょうか?

Aベストアンサー

こんな感じ?
Cells(goukei_start_row, 10) = "=SUM(R[" & 11 - goukei_start_row & "]C[0]:R[-1]C[0])"


人気Q&Aランキング