チョコミントアイス

「データベース控え」と「手番」という2つのシートがあります。
今、シート「データベース控え」を開いています。
VBAを使って「手番」シートにA3:S3をコピー&ペーストする記述方法を教えて下さい。
マクロで表現すると以下の記述となります。
繰り返し処理をする実運用では画面が切り替わるなどスマートな方法ではないので困っています。

Range("A3:S3").Select
Selection.Copy
Sheets("手番").Select
Range("A3").Select
ActiveSheet.Paste
Sheets("データベース控え").Select
Range("A4").Select

実運用では数値の部分を変数に置き換えて繰り返し処理をしたいと思っています。よろしくお願いいたします。

A 回答 (3件)

Sheets("データベース控え").Select


Range("A3:S3").Copy Sheets("手番").Range("A3")

>繰り返し処理をする実運用では画面が切り替わるなどスマートな方法ではないので困っています。

先頭行に
Application.ScreenUpdating = False
と記述すると、画面の書き換えが抑止されるのでちらつきが無くなります。

>実運用では数値の部分を変数に置き換えて繰り返し処理をしたいと

こんな方法もあります。

Dim tmp As Range
Dim tmp2 As Range

Set tmp = Application.InputBox("範囲を選択してください。", "Copy", , , , , , 8)
Set tmp2 = Application.InputBox("コピー先を選択してください。", "Copy", , , , , , 8)

'tmp.Copy Sheets("Sheet2").Range("A1")
tmp.Copy tmp2
    • good
    • 0
この回答へのお礼

ありがとうございました。2行目が求めていた記述です。
Range("A3:S3").Copy Sheets("手番").Range("A3")

先頭行に
Application.ScreenUpdating = False
を入れずに試してみたのですが画面の書き換えは起こりませんでした。
でもそういう方法があるのですね。参考になりました。

お礼日時:2008/01/14 18:12

質問の意味がはっきりしない。


まず
(1)「データベース控え」シートから、「手番」シートへコピーする一方通行だね。
(2)「手番」シートは同一ブック(内)ですね。
(3)コピーをするきっかけが書いてない。マクロ初心者だからだろうが、イベントを考える必要がある。コマンドボタンでも作るか。
(4)>数値の部分を変数に置き換えて
数値の部分とは表現がおかしい。コピー元のセル範囲のことかな。
(5)>実運用では画面が切り替わるなど
コピー先のシートに切り替わるのが、気に食わないのか
(6)(5)であるというなら(手番シートを開きたくないなら)手番シートのどの範囲に貼り付けるのかをどのように指定するのか(決めるのか)?
順次今までの貼り付けの済みの下の部分に貼り付けるコードを書いておく。
ーー
以上質問課題をこなすには経験不足と思う。本当はもっと勉強してからの課題でしょう。
ーー
Sheet1にコマンドボタンを1つ張り付け。
ボタンをダブルクリックして出てくる画面に下記を張り付け。

Private Sub CommandButton1_Click()
d = Worksheets("sheet3").Range("A65536").End(xlUp).Row
MsgBox (d + 1) & "行から張り付け"
Selection.Copy Destination:=Worksheets("sheet3").Range("A" & d + 1)
End Sub
ーー
MsgBox (d + 1) & "行から張り付け" は練習用。納得すれば削除。
Sheet3の部分は「手番」に「変えること。
ーー
操作
データベース控えシートでコピーしたいセル範囲をマウスで範囲指定。
コマンドボタンをクリック。
手番シートには今までの最終行の直下行のA列から、データが張り付いている。
    • good
    • 0
この回答へのお礼

親切な回答ありがとうございます。
(1)そうです一方通行のワークです。
(2)「手番」シートは同一ブック(内)です。
(3)コマンドボタンに登録します。
(4)数値の部分とは行番号のことでした
(5)実行中は画面が切り替わらないことを望みました
(6)手番シートを開かずに手番シートA3行目に貼り付ける
ということでした。
色々お教えいただきましたことをこれからじっくり練習用として教材にしたいと思います。一応困り事は解決しましたがまだまだ初心者です。
今回の質問を応用して作りましたものを御笑覧ください(^^ゞ

Sub 納期シート作成()
Dim i, k As Integer
i = 3
k = 3
Do While Cells(i, "A").Value <> ""
If Cells(i, "a").Value <> Cells(i - 1, "a").Value Then
Range("A" & i & ":" & "S" & i).Copy Sheets("手番").Range("A" & k)
k = k + 1
End If
i = i + 1
Loop
End Sub

お礼日時:2008/01/14 18:57

Range("A3:S3").Copy Worksheets("手番").Range("A3")

    • good
    • 0
この回答へのお礼

分かりづらい質問だったと反省しているのですが、
ズバリ的を得た回答をいただきました。ありがとうございます。
Worksheets は sheets と書いても動きました。
どう違うのかは勉強したいと思います。

お礼日時:2008/01/14 18:19

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