こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル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)を移したいと思っています
ワンクリックとはフォームのコマンドボタンで移動できればと思っています

よろしければお知恵をおかりしたくおもいます
よろしくお願いします

投稿日時 - 2008-03-27 07:42:37

QNo.3898394

暇なときに回答ください

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

こんにちは。

前回の回答者です。本来、続きの質問は、ここのローカル・ルールに触れてしまいますから、前の質問の方は、適当に締めてくださいね。どちらかが消されてしまうかもしれませんから。

>指摘のサンプルです わたしなりに作成したものです

やっぱり基本的なことは分かっていらっしゃるのですね。このぐらいに分かってらっしゃる方なら、どんどん、自信を持ってお聞きなればよいと思います。(こういうことを言うのは僭越かもしれませんが。)

#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

投稿日時 - 2008-03-27 11:55:24

お礼

たびたびのご回答 誠にありがとうございます
色々と参考書を見ながらマクロを組んでみましたが、私が考えたよりはるかに簡単なマクロでできるですね

まだこれからも勉強しながら頑張ってみます
お世話になりました

投稿日時 - 2008-03-27 21:12:54

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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
'----------------------------------------------

以上。
 

投稿日時 - 2008-03-27 10:49:16

補足

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

投稿日時 - 2008-03-27 21:14:31

お礼

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

ありがとうございました

投稿日時 - 2008-03-27 21:06:18

ANo.1

やってることはこうゆうことですか?
Sub xxx()
Sheets("sheet1").Range("B2:K100").Copy
Workbooks.Add
ActiveSheet.Paste Destination:=Range("B2:K100")
End Sub

Selectとか使わない方がいいです。
シートにコマンドボタンを付けてマクロ登録じゃだめですか?

投稿日時 - 2008-03-27 09:09:33

あなたにオススメの質問