• ベストアンサー

【Excel】 マクロをチェックして頂けないでしょうか。

こんにちは 毎月更新するシートを追加する コマンドボタンを設置したいと思います。 シートをコピーし、名前を付けた範囲「翌月繰越」を F6にコピペ。 名前を付けた範囲「クリア範囲」をクリアし、カーソルをG6に置く という、マクロを記録しました。 コマンドボタンをクリックすると、記録したマクロを 実行するようにしましたが、 Range("F6").Select の、ところで止まってしまいます。 どのように修正したら良いでしょうか。 Private Sub CommandButton2_Click() ActiveSheet.Copy Before:=ActiveSheet Application.Goto Reference:="翌月繰越" Selection.Copy Range("F6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.Goto Reference:="クリア範囲" ActiveWindow.SmallScroll Down:=-48 Application.CutCopyMode = False Selection.ClearContents Range("G6").Select End Sub また、これを実行するとコピー元シートの左側にシートが追加されますが、 コピー元シートの右側に追加するにはどうしたら良いでしょうか。 Excelは2003です。 よろしくお願いいたします。

  • hee1
  • お礼率32% (137/422)

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

#3の回答者です。 ちょっと後で、思いついたのですが、点線から下のように、マクロを分離させたほうがよいです。 同じマクロを使いますし、ブック全体の文字量の負担が減ります。 shName = Format$(CDate(shName) + 31, "yyyy.mm") このようにすれば、必ず、新しいシートは、次の月になっていきますし、2008.12 の次は、2009.01になります。 >翌月繰越には式が入っているため、値のみを貼付けたいのですが、 >.Range("F6").Value = Application.Range("翌月繰越").Value   このように逆さにすればよいです。 もし、その名前登録した部分も、数式を値に換えるなら、 Application.Range("翌月繰越").Value =Application.Range("翌月繰越").Value とすれば、値になります。 'シートオブジェクト '-------------------------------------------- 'コマンドボタンのマクロ Private Sub CommandButton2_Click()  Call CopySheet End Sub '-------------------------------------------- '標準モジュール Public Sub CopySheet() Dim shName As String Dim dum As Variant 'シート名は、yyyy.mm 型に限ります。   shName = StrConv(ActiveSheet.Name, vbNarrow)   shName = Replace(shName & "/01", ".", "/", , , 1)   shName = Format$(CDate(shName) + 31, "yyyy.mm")   On Error Resume Next    dum = Worksheets(shName).Range("A1")    If Err.Number = 0 Then     MsgBox "すでに、" & shName & " シートは存在しています。", 48     Exit Sub    End If   On Error GoTo 0   ActiveSheet.Copy After:=ActiveSheet   With ActiveSheet     .Name = shName     .Range("F6").Value = Application.Range("翌月繰越").Value     Application.Range("クリア範囲").ClearContents     .Range("G6").Select   End With End Sub

hee1
質問者

お礼

ご回答有難うございます。 完璧!といいますか、 自分が考えていた以上に上手くできてしまいました。 本当に助かりました。 有難うございました。

その他の回答 (4)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.4

最近この手の質問が多いような。。。(^^;;; エラーの原因は、シート名を省略しているからです。 複数のシートを扱うときは、Range、Cellsの前に必ずシート名を付加しませう。 もちろん、名前が特定できないときはActiveSheetとしてもいいし(今回の場合)、 コピーしてできたシートをオブジェクト変数に入れてそれを使うとか。   (1)ActiveSheetを使う場合 '------------------------------------------ Private Sub CommandButton2_Click()  ActiveSheet.Copy Before:=ActiveSheet  ActiveSheet.Range("F6").Value = ActiveSheet.Range("翌月繰越")  ActiveSheet.Range("クリア範囲").ClearContents  ActiveSheet.Range("G6").Select End Sub '------------------------------------------- (2)コピーしたシートをオブジェクト変数に入れて使う場合。 '--------------------------------------------------- Private Sub CommandButton2_Click()  Dim NewSheet As Worksheet  ActiveSheet.Copy Before:=ActiveSheet  Set NewSheet = ActiveSheet  NewSheet.Range("F6").Value = NewSheet.Range("翌月繰越").Value  NewSheet.Range("クリア範囲").ClearContents  NewSheet.Range("G6").Select End Sub '---------------------------------------------- 何れにしろ、上記(1)(2)とも、 ActiveSheet.Copy Before:=ActiveSheet このActiveSheetは、まだコピー元のシートです。 このコードが実行されあと、コピーしてできたシートがActiveSheetになります。 それは(2)のコードを見れば何となくでも分かると思います。 それから、コピー元の右にコピーしたいときは、  Before:= => After:= 以上。

hee1
質問者

お礼

回答頂きありがとうございます。 大変分かりやすく、勉強になりました。 有難うございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

#2の補足です。 あえて、シートコピーで、オブジェクトなどの移動を考えたものだとしたら、このようになります。 shName は、例えば、4月なら、5月が新しいシートとして変更されていきます。 Private Sub CommandButton2_Click() Dim shName As String Dim dum As Variant   shName = StrConv(ActiveSheet.Name, vbNarrow)   shName = Val(shName) Mod 12 + 1 & "月"   On Error Resume Next    dum = Worksheets(shName).Range("A1")    If Err.Number = 0 Then     MsgBox "すでに、" & shName & " シートは存在しています。", 48     Exit Sub    End If   On Error GoTo 0   ActiveSheet.Copy After:=ActiveSheet   With ActiveSheet     .Name = shName     Application.Range("翌月繰越").Copy .Range("F6")     Application.Range("クリア範囲").ClearContents     .Range("G6").Select   End With End Sub

hee1
質問者

補足

ご回答有難うございます。 上手く行きました。 シートを作成する際、翌月の「5月」と表示される点まで ご配慮いただき有難うございます。 シート名「2008.04」を新しいシート名「2008.05」と するには、どのようにしたらよいでしょうか。 また、翌月繰越の範囲を貼付ける際、 翌月繰越には式が入っているため、値のみを貼付けたいのですが、 どのようにしたらよいでしょうか。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 そのマクロは分かりにくいですね。 最初に、記録マクロで作られたものは、「標準モジュール」で動くようには作られても、シートモジュールでは動くようにはなっておりません。 まず、セルやRangeの位置関係が、曖昧なのです。 'コマンドボタンのあるシートから、 ActiveSheet.Copy Before:=ActiveSheet '新しいシート Application.Goto Reference:="翌月繰越" '前のシート Selection.Copy '前のシートの翌月繰越 Range("F6").Select 'これはコマンドボタンのあるシートになくてはエラーが発生します。 それと、その「名前-登録」の使ったマクロは読めません。私が、以前から、ぼんやりとしていた問題のイメージが、このコードでやっとはっきりしました。 この場合は、「名前-登録」がどこにあるかにもよりますが、このName オブジェクトが、Applicationに対して一意ですから、コピー側に移ってしまうようです。そうすると、どうしようもないというか、そのマクロでは、偶然に誰かが場あり的に解答は出来ても、今の時点では、厳密には答えはありません。 「名前-登録」の処理をどのようにするかにもよります。 今の段階では、シートコピーをやめて、シートを新たに挿入するスタイルにして、元のシートのCellsコピーすれば、問題は減るとは思います。 >コピー元シートの右側に追加するにはどうしたら良いでしょうか。 ActiveSheet.Copy After:=ActiveSheet ということでしょうか。

  • fifaile
  • ベストアンサー率25% (622/2403)
回答No.1

マクロはよくわからないので的外れかもしれませんけど、 >Range("F6").Select これってコピー先のシートを参照していますか? 別シートの場合はシート名を入れないとまずいとおもうんですが。 マクロだとちがうのかな?

hee1
質問者

補足

お返事ありがとうございます。 はい。 F6はコピー先シートのF6です。 コピー先は「元シート名(1)」になりますが、 これを指定するにはどうしたら良いのか分かりません…。

関連するQ&A

  • エクセル2007マクロ シート間のセルコピー

    [Sheet1]にあるデータを[Sheet2]にコピーするマクロボタンを[Sheet2]に作りたいのですが、マクロがよく分からないので、「マクロの記録」で作成してみました。 Sub siken() ' ' siken Macro ' ' Sheets("Sheet1").Select Range("A1").Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B3").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B3").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B6:D6").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B6").Select ActiveSheet.Paste End Sub (実際はもっと多くのセルをコピーします) マクロを実行すると、ちゃんとコピーできるのですが、セルをコピーする都度[Sheet1]と[Sheet2]が交互に表示されます。 コピー元の[Sheet1]を表示させずにマクロを実行させるにはどのようにしたらよいのでしょうか? よろしくお願いします。

  • サッカーもいいけどマクロもねっ

    多分わかる人には簡単な内容だと思いますが・・ Rows("1:1").Select Range("D1").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet2!R1C1:R1200C2,2,FALSE)" Range("D1").Select Selection.Copy Application.Goto Reference:="R2C4:R65000C4" ActiveSheet.Paste Application.CutCopyMode = False Cells.Select Range("A2").Activate Selection.AutoFilter Selection.AutoFilter Field:=4, Criteria1:="0" End Sub これは「Sheet1にデーター」を入れ 「Sheet2のA列」に調べたい項目を打ち込み Sheet1でマクロの実行をし Sheet1の上の方に調べてる項目が出てくるマクロです 質問は「Sheet2のA列」に調べる項目を打ち込むのではなく 「Sheet2のB列」打ち込みを変更したいのです どこを変えれば良いのでしょうか? 又、A列には「ABC123」と打っているのですが「abc123」の様に小文字にも対応出来る方法はありますか?

  • マクロでシート2~6のデータをシート1に転記したい

    マクロでシート2~6のデータをシート1に転記したいです。 シート2~6のデータを シート1に順番に転記したくてマクロの記録を利用して作成しました。 シート2~6は列は同じですが行数は異なります。 また行数は作業の都度異なります。 同じ記述が繰り返されているので もう少し記述が短くできるのではと思うのですが どうすればいいでしょうか? Sub データ更新() 'シート1の前回データをクリア Sheets("シート1").Select Range("A2:Q2").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents Range("A2").Select Sheets("シート1").Select Range("A1").Select Sheets("シート2").Select Range("A1").Select 'ヘッダーも合わせて取得 Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート3").Select Range("A2").Select 'データのみ取得 Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート4").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート5").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート6").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select End Sub

  • EXCELのVBAについて

    マクロのボタンで内容を削除する様に設定した所、 Dim re As Integer Sheets("投入シート").Select re = MsgBox("入力データをクリアします。" & vbCrLf & vbCrLf & "よろしいですか?", vbOKCancel, "クリア確認") If re <> vbCancel Then Sheets("投入シート").Select ActiveSheet.Unprotect Range("a1:c30").Select Selection.Copy Application.CutCopyMode = False Selection.Copy Sheets("work").Select Range("A1").Select ActiveSheet.Paste Sheets("投入シート").Select ActiveSheet.Unprotect Range("c4:c30").Select Selection.ClearContents Range("f31").Select Selection.Copy Range("c9").Select ActiveSheet.Paste Range("f33").Select Selection.Copy Range("c11").Select ActiveSheet.Paste Range("f32").Select Application.CutCopyMode = False Selection.Copy Range("c14").Select ActiveSheet.Paste Range("c4").Select Application.CutCopyMode = False 'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End If Sheets("投入シート").Select Range("c4").Select End Sub この様に入力したのですがセルのC11の計算式だけセル番号が消えてしまいます。 どうしてでしょうか?ご指導をお願いします。

  • 【Excel】2つのBook間のマクロ

    Excel2003を使用しています。 BookAのSheet1とSheet2のある範囲をそれぞれBookBのSheet1とSheet2に値のみコピーするというマクロを作成しようとしています。 (1)Sheet1を値のみコピーするコード   を書いて (2)Sheet2を値のみコピーするコード   を書こうと思っていたのですが、(1)から(2)へどのように続けて書いたらいいでしょうか? (1)のコードは  Sheets("Sheet1").Range("A1:G30").Select  Selection.Copy  Workbooks.Open Filename:="A:\B.xls"  Sheets("Sheet1").Range("A1").Select   Selection.PasteSpecial Paste:=xlPasteValues   Application.CutCopyMode = False と書いています。 また、こういう場合は、BookAとBookBのどちら側にコードを書いた方がいいのでしょうか?

  • マクロで住所録を抽出して、別シートにコピーするのに

    マクロで住所録を抽出して、別シートに抽出したデータをバラバラに貼り付けたいです。 当方、マクロ初心者なので、分かりやすく教えてください。 シート1『入力シート』、シート2『印刷シート』、シート3に『客先住所録』とあって、今までは住所録のデータをセル1つずつをコピーしてシート1の入力シートに貼り付けて、シート1から2へは関数の=セル番号として飛ばして、シート2の印刷シートを印刷していました。 せっかく、住所録があるからなんとか簡単にならないかと言われて、初心者ながらマクロを作成しました。住所録のオートフィルタで抽出まではうまく出来たのですが、入力シートにコピー貼付が作成時に抽出した住所録は出来ますが、それ以外の住所で抽出すると出来ません。 どうすれば、いいのかご教授願います。 シート3『客先住所録』 A1 チェック A2 1 A3 B3 C3 D4 E4 F4 1又は空白 会社名 〒 住所 FAX TEL 以下70件ほど住所録入力あり。 シート1『入力シート』 G4に〒 G5に住所 K6に電話番号 Y6にFAX G7に会社名 にコピーしたいです。 自分が作成したマクロは Range("A3:F70").Select Range("A3:F48").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Range("A1:A2"), Unique:=False Range("B7").Select Selection.Copy Sheets("入力シート").Select Range("G7:AF7").Select ActiveSheet.Paste Sheets("客先住所録").Select Range("C7").Select Application.CutCopyMode = False Selection.Copy Sheets("入力シート").Select Range("I4:AH4").Select ActiveSheet.Paste Sheets("客先住所録").Select Range("D7").Select Application.CutCopyMode = False Selection.Copy Sheets("入力シート").Select Range("G5:AH5").Select ActiveSheet.Paste Sheets("客先住所録").Select Range("E7").Select Application.CutCopyMode = False Selection.Copy Sheets("入力シート").Select Range("K6:T6").Select ActiveSheet.Paste Sheets("客先住所録").Select Range("F7").Select Application.CutCopyMode = False Selection.Copy Sheets("入力シート").Select Range("Y6:AH6").Select ActiveSheet.Paste End Sub どう治せば良いのか、宜しくお願いします。 宜しくお願いします。

  • マクロについて教えてください

    マクロの超初心者です。 数式を入力しているのではなく、配付物をエクセルで作成しているのですが、同じもの(氏名や項目は違いますが)を100枚ほど作成しているのでマクロを・・・と思ったのですがやり方が全く分かりません。 sheet1からsheet2に下記のようにデータを写したいのですが、やり方を教えてください。 ●氏名が入力されています sheet1(A9) → sheet2(C2) sheet1(E9) → sheet2(C5) sheet1(I9) → sheet2(C8) ●項目1 sheet1(A8) → sheet2(E3) sheet1(E8) → sheet2(E6) sheet1(I8) → sheet2(E9) ●項目2 sheet1(A18~D18の結合セル) → sheet2(E2) sheet1(E18~H18の結合セル) → sheet2(E5) sheet1(I18~L18の結合セル) → sheet2(E8) と反映させたいのですが、250行あるのですが、 簡単にマクロで出来ないでしょうか?? ちなみに↓コレが上記の内容で作ってみたものです。 わかりずらい質問でスイマセン。 Range("A9").Select Selection.Copy Sheets("sheet2").Select Range("C2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E6").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A18:D18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E18:H18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I18:L18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

  • Excel 繰り返しマクロ

    下記のようなマクロを使ってn個あるシートの内容を「集計」シートにコピーさせるようにしました。 (自動マクロとの組合せなので、スマートではないかもしれませんが) でも、これだと「集計」シートもコピー作業を行ってしまうので、 「集計」シートはコピー作業をしないように除外したいのですが、どうしたら良いのでしょう? 実際にはシート数は30程度、コピペ項目は1シートあたり30項目程度あります。 よろしくお願いします。 ------------------------- Sub テスト2() ' For i = 1 To Worksheets.Count '案件番号等コピー ' Sheets(i).Select Range("D3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '案件名 Sheets(i).Select Range("F3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '国名 Sheets(i).Select Range("E3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("C4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '選択セルの解放 Application.CutCopyMode = False '行挿入 ' Sheets("集計").Select Rows("4:4").Select Selection.Insert Shift:=xlDown Next i End Sub

  • vba 不揃いの行数にカーソル位置対応

    os_xp //// ex_2003 Sub goo() ' goo Macro ' Keyboard Shortcut: Ctrl+g ' Range("A65524").Select Selection.End(xlUp).Select Rows("669:669").Select '(1)-----次回及び 他のシートは不揃いの為 Selection.Copy Rows("670:670").Select '(2)-----(1)が位置が変化するからここも対応 ActiveSheet.Paste Application.CutCopyMode = False Range("A669:F669").Select '-----範囲の変更ありの予定 Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveSheet.Paste Application.CutCopyMode = False Range("BD669:BG669").Select '-----範囲の変更ありの予定 Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveSheet.Paste Application.CutCopyMode = False Range("A672").Select '(3)-----次回及び 他のシートは不揃いの為 最後に記録の2段下にカーソルが来て欲しい End Sub ' 'どのシートでも (1) (2) (3) が対応してくれないか?。 '

  • エクセルマクロ 繰り返して、別のシートへコピーしたい

    エクセルマクロ 繰り返して、別のシートへコピーしたい マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、 どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 1行目から10行目まで繰り返したくて、 1行目から2行目のセルの移動の差は10行目までかわりません。 '1行目 Sheets("Sheet1").Select Range("B14:C14").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B15:C17").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False '2行目 Sheets("Sheet1").Select Range("B18:C18").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B19:C21").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B2").Select Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False

専門家に質問してみよう