• ベストアンサー

エクセルVBA 3/26夜の補足です

おはようございます お忙しいに申し訳ありません 春から私用で使うための自作ソフトを作成したおります ご迷惑おかけします 指摘のサンプルです わたしなりに作成したものです Sub sheetcopy1() ThisWorkbook.Sheets("sheet1").Select Range("B2:K100").Select Selection.Copy Dim wb As Workbook Set wb = Workbooks.Add ThisWorkbook.Sheets("sheet1").Copy before:= _ wb.Worksheets(1) Set wb = Nothing End Sub これですと、新しいBOOKが起動しシートすべての項目が張り付きます シートの一部を(B2からK100)を移したいと思っています ワンクリックとはフォームのコマンドボタンで移動できればと思っています よろしければお知恵をおかりしたくおもいます よろしくお願いします

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

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

こんにちは。 前回の回答者です。本来、続きの質問は、ここのローカル・ルールに触れてしまいますから、前の質問の方は、適当に締めてくださいね。どちらかが消されてしまうかもしれませんから。 >指摘のサンプルです わたしなりに作成したものです やっぱり基本的なことは分かっていらっしゃるのですね。このぐらいに分かってらっしゃる方なら、どんどん、自信を持ってお聞きなればよいと思います。(こういうことを言うのは僭越かもしれませんが。) #2 のonlyromさんが、ご指摘になっている通りですが、最初は、この掲示のMySheetcopy1 のような書き方ですね。ただ、Select の使い方には、難しい部分があります。Select は、一旦、オブジェクトを格納しているのです。 しかし、  ThisWorkbook.Sheets("sheet1").Select という方法は、通る場合と、通らない場合がありますから、最初は、一つずつ上のオブジェクトから、降りていくような感じで書くと分かりやすいです。ブックがはっきりしている場合は、ThisWorkbook は必要ないかもしれません。特に、コマンドボタンなどの場合は、シートに付随するものなので、最初から、Rangeの範囲を指定して、コピーしてしまっても良いのです。 Mysheetcopy1 の場合は、  Range("B2:K100").Select から始めてよいし、 Mysheetcopy2 の場合は、 Range("B2:K100").Copy .Worksheets("Sheet1").Range("B2") というだけで構いません。 '------------------------------- Sub MySheetcopy1()   Dim wb As Workbook   ThisWorkbook.Activate   Sheets("Sheet1").Select   Range("B2:K100").Select   Selection.Copy      Workbooks.Add   Sheets("Sheet1").Select   Range("B2").Select   ActiveSheet.Paste   Application.CutCopyMode = False 'コピーモードを解除   Set wb = Nothing End Sub '------------------------------- '     ↓ '慣れたら、こんなパターンもあります。 Sub MySheetcopy2()   With Workbooks.Add   ThisWorkbook.Sheets("Sheet1").Range("B2:K100").Copy .Worksheets("Sheet1").Range("B2")   'B2 へコピーする場合。   End With End Sub

mintosp
質問者

お礼

たびたびのご回答 誠にありがとうございます 色々と参考書を見ながらマクロを組んでみましたが、私が考えたよりはるかに簡単なマクロでできるですね まだこれからも勉強しながら頑張ってみます お世話になりました

その他の回答 (2)

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

質問者のレベルでは、少々コードが長くなっても ブック、シートなど全て指定した方が勉強になるでしょう。 マクロのあるブックのSheet1のセル範囲B2:K100を 追加したブックのSheet1のセルA1からコピーする場合 '-------------------------------------------- Sub Test() Dim myBook As Workbook Set myBook = Workbooks.Add ThisWorkbook.Sheets("Sheet1").Range("B2:K100").Copy _ myBook.Sheets("Sheet1").Range("A1") End Sub '---------------------------------------------- 以上。  

mintosp
質問者

お礼

お世話になりました あまり難しくなく簡単にマクロができますね 考えていました ありがとうございました

mintosp
質問者

補足

お礼の分の訂正です 考えていましたとあるのは削除します 申し訳ありません

  • suz83238
  • ベストアンサー率30% (197/656)
回答No.1

やってることはこうゆうことですか? Sub xxx() Sheets("sheet1").Range("B2:K100").Copy Workbooks.Add ActiveSheet.Paste Destination:=Range("B2:K100") End Sub Selectとか使わない方がいいです。 シートにコマンドボタンを付けてマクロ登録じゃだめですか?

関連するQ&A

専門家に質問してみよう