[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Sheetから別Sheetコピー時の画面の移動』(キリキ)
皆様、明けましておめでとうございます。 本年も昨年同様、よろしくお願いいたします。
大変初歩的な質問かと思いますが、マクロで同一Book内のSheetの一部をコピーし 別Sheetに貼り付けしたいのですが、画面が一瞬移動します。 どうすれば、画面の移動をしないコピペが出来ますでしょうか? よろしくお願いいたしますm(_ _)m
Dim myr As Long, count As Long, p As Long Dim wst As Worksheet, wsh As Worksheet Set wsh = Sheets("発注台帳") Set wst = Sheets("タグ作成") p = -1 For myr = 3 To 79 Step 4 wsh.Activate If Cells(myr, 109) = "○" Then count = count + 1 Range(Cells(myr, 8), Cells(myr, 106)).Copy With wst If count Mod 2 <> 0 Then p = p + 1 End If .Cells(p * 14 + 3, 103) = Cells(myr - 1, 1) .Cells(p * 14 + 5, 103) = Cells(myr + 1, 1) .Cells(p * 14 + 7, 103) = Cells(myr - 1, 2) .Cells(p * 14 + 13, 152) = Cells(myr - 1, 4) .Cells(p * 14 + 10, 109) = Cells(myr + 1, 13) .Range("B9:CV9").Offset(p * 14, 102).PasteSpecial Paste:=xlPasteValues End With Application.CutCopyMode = False End If Next myr End Sub
マクロの最初に Application.ScreenUpdating = False を入れて、 最後に Application.ScreenUpdating = True を入れてください。 このコードの間では、画面の書き換えはありません。 (sato)
根本的には > wsh.Activate があるからかと思います。多分。 訂正追記: なくしても動くわね…上記発言取消。 > .Range("B9:CV9").Offset(p * 14, 102).PasteSpecial Paste:=xlPasteValues の部分でごちゃごちゃ動くのね。 (ご近所PG)
今回のは Application.ScreenUpdating = False を入れても画面がちらつくんですね。 ご近所さんのおっしゃるように、PasteSpecial Paste:=xlPasteValuesが原因のようなので 一度コピーして書式のクリアではダメでしょうかね・・・。
Sub Test() Dim myr As Long, count As Long, p As Long Dim wst As Worksheet, wsh As Worksheet Set wsh = Sheets("発注台帳") Set wst = Sheets("タグ作成") p = -1 For myr = 3 To 79 Step 4 If Cells(myr, 109) = "○" Then count = count + 1 With wst If count Mod 2 <> 0 Then p = p + 1 End If .Cells(p * 14 + 3, 103) = Cells(myr - 1, 1) .Cells(p * 14 + 5, 103) = Cells(myr + 1, 1) .Cells(p * 14 + 7, 103) = Cells(myr - 1, 2) .Cells(p * 14 + 13, 152) = Cells(myr - 1, 4) .Cells(p * 14 + 10, 109) = Cells(myr + 1, 13) Range(Cells(myr, 8), Cells(myr, 106)).Copy Destination:= _ .Range("B9:CV9").Offset(p * 14, 102) .Range("B9:CV9").Offset(p * 14, 102).ClearFormats End With Application.CutCopyMode = False End If Next myr End Sub
(川野鮎太郎)
同じセル範囲の大きさのRangeオブジェクト同士なら値の引渡しが 楽にできるので下記のような方法は良く使います。 Sub test() Dim Rng1 As Range Dim Rng2 As Range With Worksheets(1) Set Rng1 = .Range(.Cells(1, 1), .Cells(1, 10)) End With With Worksheets(2) Set Rng2 = .Range(.Cells(1, 1), .Cells(1, 10)) End With Rng2.Value = Rng1.Value End Sub 応用できると思うけど。 (みやほりん)
satoさん、ご近所PGさん、川野鮎太郎さん、みやほりんさん、ありがとうございます。
説明不足で申し訳ありません、、、 >Range(Cells(myr, 8), Cells(myr, 106)).Copy の部分には VLOOKUP関数が入っておりまして、0or1を返すようになっております。 それを別Sheetに作ってある条件付き書式の部分に値複写をし、セルの色を付をしたかったのです(^_^;) 例のJANコード作成ましぃ〜んの改良版です(知らないか・・・
川野さんの案ですと条件付書式が消えてしまいます(T_T) satoさんのコードを追加したら解決しました(^^) みやほりんさん案も素敵ですね〜 ありがとうございました(^o^) (キリキ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.