Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


61814 / 76738 ←次へ | 前へ→

【19537】Re:sheet1に貼り付けたデータの分解について
回答  ちゃっぴ  - 04/11/7(日) 16:44 -

引用なし
パスワード
   記録はできたようですね。
ではこの記録された内容について考えてみましょう。

>  Range("A1:A30").Select
>  Selection.Copy

まず、上記の部分ですが、"A1:A30"をCopyしていますね。
ここの部分は「Sheet1」の"A1:A30"ですよね?

なのでこのように書き換えることができます。

WorkSheets("Sheet1").Range("A1:A30").Copy '・・・(1)

どこのシートの   どこの場所を   コピーする

という感じです。
ちなみに、この"Sheet1"はある特定のBookのシートですよね?
なのでBookを特定して

WorkBooks("あるBook")WorkSheets("Sheet1").Range("A1:A30").Copy '・・・(2)

と書くこともできます。
マクロ記録では、操作一回ごとに記録されますが、
このようにBookやSheetを特定して書くことができれば、
Select, Activateは必要なくなります。
Select, Activateを使用しないコーディングを心がけましょう。

>  Sheets("Sheet2").Select
>  Range("A1").Select
>  ActiveSheet.Paste

なお、ここで貼り付けを行ってますが、Copyをヘルプで引くと、
Destination〜というのがあると思いますので前の部分と合わせて

WorkSheets("Sheet1").Range("A1:A30").Copy _
  Destination:=WorkSheets("Sheet2").Range("A1") '・・・(3)

このように書くことができます。

>Sub 繰り返し処理()
>  Dim i As Integer
>  For i = 1 To 25 Step 30
>   
>  Next i
>End Sub

ここで初めて、ループ処理に入れることを考えますが、
(3)で示したものですと、ちょっと面倒になります。
なぜなら、Sheetやセルを指定している引数が文字列だからです。
For 〜 Nextでまわすループカウンタは数値ですよね?
なので、数値が使えるように書き換えてやります。

WorkSheets(1).Cells(1, 1).ReSize(30, 0).Copy _
  Destination:=WorkSheets(2).Cells(1, 1) '・・・(4)

この方法ですと、SheetはIndexを使って指定しています。
SheetのIndexは画面のSheetの並び順ですのでこの場合、
左から1番目のSheetのあるデータを左から2番目シートにコピーする
という意味になります。

同様にCells, ReSizeについてもお調べください。

また、次のSheetの場合、このようになりますよね?

WorkSheets(1).Cells(31, 1).ReSize(30, 0).Copy _
  Destination:=WorkSheets(3).Cells(1, 1) '・・・(5)

ここで変化している数値を方程式にしてみてください。
たとえばSheetが1つ右にずれるたびに行は何行動きますか?
Sheetの増分を「i」とすると、行の増分「j」はどのようにあらわせますか?

k = ??? i
  ~~~
   ↑ここに入るものを考えてください。

0 hits

【19487】sheet1に貼り付けたデータの分解について やす 04/11/4(木) 23:25 質問
【19488】Re:sheet1に貼り付けたデータの分解について ちゃっぴ 04/11/4(木) 23:35 回答
【19514】Re:sheet1に貼り付けたデータの分解について やす 04/11/5(金) 22:56 お礼
【19515】Re:sheet1に貼り付けたデータの分解について ちゃっぴ 04/11/5(金) 23:35 回答
【19534】Re:sheet1に貼り付けたデータの分解について やす 04/11/7(日) 14:47 お礼
【19537】Re:sheet1に貼り付けたデータの分解について ちゃっぴ 04/11/7(日) 16:44 回答

61814 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free