Excel VBA質問箱 IV

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

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


4715 / 13644 ツリー ←次へ | 前へ→

【54919】マクロ初心者です。 kool 08/4/4(金) 11:22 質問[未読]
【54920】Re:マクロ初心者です。 ν 08/4/4(金) 12:07 発言[未読]
【54922】Re:マクロ初心者です。 kool 08/4/4(金) 13:46 発言[未読]
【54924】Re:マクロ初心者です。 ν 08/4/4(金) 14:29 発言[未読]
【54926】Re:マクロ初心者です。 わいわい 08/4/4(金) 15:01 発言[未読]
【54928】Re:マクロ初心者です。 kool 08/4/4(金) 15:36 お礼[未読]
【54927】Re:マクロ初心者です。 kool 08/4/4(金) 15:31 お礼[未読]
【54929】Re:マクロ初心者です。 ν 08/4/4(金) 15:40 発言[未読]
【54932】Re:マクロ初心者です。 kool 08/4/4(金) 16:05 発言[未読]
【54934】Re:マクロ初心者です。 ν 08/4/4(金) 16:11 発言[未読]
【54936】Re:マクロ初心者です。 kool 08/4/4(金) 16:31 お礼[未読]
【54937】Re:マクロ初心者です。 ν 08/4/4(金) 17:37 発言[未読]
【54976】Re:マクロ初心者です。 kool 08/4/8(火) 10:02 お礼[未読]
【54930】Re:マクロ初心者です。 ひげくま 08/4/4(金) 15:42 発言[未読]
【54931】Re:マクロ初心者です。 わいわい 08/4/4(金) 16:04 発言[未読]
【54933】Re:マクロ初心者です。 kool 08/4/4(金) 16:09 お礼[未読]
【54935】Re:マクロ初心者です。 kool 08/4/4(金) 16:14 お礼[未読]
【54921】Re:マクロ初心者です。 わいわい 08/4/4(金) 12:36 発言[未読]
【54923】Re:マクロ初心者です。 kool 08/4/4(金) 13:51 回答[未読]
【54925】Re:マクロ初心者です。 注意 08/4/4(金) 14:31 発言[未読]

【54919】マクロ初心者です。
質問  kool E-MAIL  - 08/4/4(金) 11:22 -

引用なし
パスワード
   シートA(元データ)の表形式のデータ(500行:14項目)を
シートB(冊子)へレイアウトを変更してコピーしたいと思っています。
インターネットなどを見て以下のように1行分作ったのですが、

Sheets("元データ").Select
Sheets("元データ").Range("A4").Copy
Sheets("冊子").SelectRange("C8").PasteSpecial Paste:=xlValues
Sheets("元データ").Select
Sheets("元データ").Range("B4").Copy
Sheets("冊子").SelectRange("C11").PasteSpecial Paste:=xlValues

2行目から500行目までも同じような法則で
簡単にコピーができる方法はないでしょうか?
つまずいているのは、貼り付け先のセルが一定間隔ではありますが
間が開いているところです。
以下のように2行目以降を8行間隔で貼り付けたいのですが。。。
  
Sheets("元データ").Select
Sheets("元データ").Range("A5").Copy
Sheets("冊子").SelectRange("C16").PasteSpecial Paste:=xlValuesSheets
("元データ").Select
Sheets("元データ").Range("B5").Copy
Sheets("冊子").SelectRange("C19").PasteSpecial Paste:=xlValues

説明が下手で申し訳ありませんが、宜しくお願いします。m(_ _)m

【54920】Re:マクロ初心者です。
発言  ν  - 08/4/4(金) 12:07 -

引用なし
パスワード
   法則がよくわからないんだけど、どういうこと?

>以下のように2行目以降を8行間隔で貼り付けたいのですが。。。
>Sheets("元データ").Select
>Sheets("元データ").Range("A5").Copy
>Sheets("冊子").SelectRange("C16").PasteSpecial Paste:=xlValuesSheets
>("元データ").Select
>Sheets("元データ").Range("B5").Copy
>Sheets("冊子").SelectRange("C19").PasteSpecial Paste:=xlValues
8行間隔???

【54921】Re:マクロ初心者です。
発言  わいわい  - 08/4/4(金) 12:36 -

引用なし
パスワード
   Sub T()
Dim i As Long
Dim T_Range As Range
i = 8
For Each T_Range In Sheets("元データ").Range("A4:A10")
  MsgBox T_Range.Address & " のコピぺ開始"
  Sheets("元データ").Select
  T_Range.Copy 'Sheets("元データ").Range("A4").Copy
  Sheets("冊子").Range("C" & i).PasteSpecial Paste:=xlValues
  Sheets("元データ").Select 'PasteSpecialなので必要ない
  MsgBox T_Range.Offset(0, 1).Address & " のコピぺ開始"
  T_Range.Offset(0, 1).Copy 'Sheets("元データ").Range("B4").Copy
  Sheets("冊子").Range("C" & i + 3).PasteSpecial Paste:=xlValues
  i = i + 8
Next T_Range
End Sub
で、動きの確認してチョ
OKだったら、コードの整理をしてUPします。

【54922】Re:マクロ初心者です。
発言  kool E-MAIL  - 08/4/4(金) 13:46 -

引用なし
パスワード
   返信が遅くなってすみません。

具体的に言うと、
シートAのA4,A5,A6,A7,A8,A9,A10を
シートBのC8,C16,C24,C32,C40,C48,C56に
コピーしたいです。

【54923】Re:マクロ初心者です。
回答  kool E-MAIL  - 08/4/4(金) 13:51 -

引用なし
パスワード
   返信が遅れて申し訳ありません。
回答ありがとうございます。

まったくの初心者なので回答について質問なのですが、
記載して頂いたものをコピペすればよろしいのでしょうか?
そのままコピペしたら、「インデックスが有効範囲ではない」
と出たのですが。。。

すみませんが、返答お願いします。

【54924】Re:マクロ初心者です。
発言  ν  - 08/4/4(金) 14:29 -

引用なし
パスワード
   >具体的に言うと、
>シートAのA4,A5,A6,A7,A8,A9,A10を
>シートBのC8,C16,C24,C32,C40,C48,C56に
>コピーしたいです。

こんな感じですかね?

――――――――――――――――――――――――――――――
Dim i As Long
Dim wsOrigin As Worksheet
Dim wsTarget As Worksheet
Dim rng As Range

Set wsOrigin = ActiveWorkbook.Worksheets("シートA")
Set wsTarget = ActiveWorkbook.Worksheets("シートB")

For Each rng In wsOrigin.Range("A4:A10")
  rng.Copy wsTarget.Range("C" & i + 8)
  i = i + 8
Next
――――――――――――――――――――――――――――――

【54925】Re:マクロ初心者です。
発言  注意  - 08/4/4(金) 14:31 -

引用なし
パスワード
   質問者の方へのお願い

タイトルは内容を示すものに
記事のタイトルは、その質問の内容が端的にわかるようなものにしてください。
単に「教えてください」とか「困っています」などといったタイトルでは、回答者があなたの質問をクリックしない可能性が非常に高くなります。すなわち、回答がつかない可能性が高くなる、ということです。

【54926】Re:マクロ初心者です。
発言  わいわい  - 08/4/4(金) 15:01 -

引用なし
パスワード
   インデックス・・・・
はシート名が違うとでます
そのままコピペで動くはずです。か?

ν さん
rng.Copy wsTarget.Range("C" & i + 8)
この使い方知りませんでした。勉強になります。

【54927】Re:マクロ初心者です。
お礼  kool E-MAIL  - 08/4/4(金) 15:31 -

引用なし
パスワード
   回答ありがとうございます。

作って頂いたマクロをコピペしたら思い通りの形で反映されました。
違う列もしたい時は、Aを他の列(BやC)にして作っていけば
よろしいのでしょうか?

甘えてばかりですみませんが、お時間ありましたら回答お願いします。

【54928】Re:マクロ初心者です。
お礼  kool E-MAIL  - 08/4/4(金) 15:36 -

引用なし
パスワード
   回答ありがとうございました。

シート名変更したら希望通りの形で反映されました。


1つ始めてみたのもがあったので質問してもよろしいでしょうか?

マクロを実行すると「***開始」と作業ごとに出るのですが、
これはマクロのどの部分で指示されているのでしょうか?

今後非表示にしたい時の為に知りたいので、
申し訳ありませんがご回答下さいますようお願いしますm(_ _)m

【54929】Re:マクロ初心者です。
発言  ν  - 08/4/4(金) 15:40 -

引用なし
パスワード
   >違う列もしたい時は、Aを他の列(BやC)にして作っていけば
>よろしいのでしょうか?

B列やC列の場合は、どこへコピーするの?
それ以降の列の場合は?

 A列(シートA) → C列(シートB)の8行目開始の8行飛び
 B列(シートA) → ?
 C列(シートA) → ?
  ・
  ・
  ・

【54930】Re:マクロ初心者です。
発言  ひげくま  - 08/4/4(金) 15:42 -

引用なし
パスワード
   ▼kool さん:
>作って頂いたマクロをコピペしたら思い通りの形で反映されました。
>違う列もしたい時は、Aを他の列(BやC)にして作っていけば
>よろしいのでしょうか?
>
>甘えてばかりですみませんが、お時間ありましたら回答お願いします。

横から失礼します。

甘えすぎです。
まずは、やってみてはいかがでしょうか?
その上で、うまくいかなかったときに、改めて質問するようにしましょう。

【54931】Re:マクロ初心者です。
発言  わいわい  - 08/4/4(金) 16:04 -

引用なし
パスワード
   ひげくま さん こんにちわ
www.officetanaka.net/excel/vba/function/MsgBox.htm
ヒントだけで

kool さん 上のリンクをInternet Explorer のアドレスにぺして下さい
他にも色々ありますので、がんばって (^0^!!!

【54932】Re:マクロ初心者です。
発言  kool E-MAIL  - 08/4/4(金) 16:05 -

引用なし
パスワード
   迅速な返答に心から感謝します。


>B列やC列の場合は、どこへコピーするの?
>それ以降の列の場合は?
>
> A列(シートA) → C列(シートB)の8行目開始の8行飛び
> B列(シートA) → ?
> C列(シートA) → ?

具体的には、下記のようにしたいです。

A列(シートA) → C列(シートB)の8行目開始の8行飛び
B列(シートA) → C列(シートB)の11行目開始の8行飛び
C列(シートA) → D列(シートB)の11行目開始の8行飛び

vさんのマクロを元に下のように自分でやってみたのですが、
------------------------------------------------------
Sub MacroVさん()

Dim i As Long
Dim wsOrigin As Worksheet
Dim wsTarget As Worksheet
Dim rng As Range

Set wsOrigin = ActiveWorkbook.Worksheets("元データ")
Set wsTarget = ActiveWorkbook.Worksheets("冊子")

For Each rng In wsOrigin.Range("A4:A10")
  rng.Copy wsTarget.Range("C" & i + 8)
  i = i + 8
For Each rng In wsOrigin.Range("B4:B10")
  rng.Copy wsTarget.Range("C" & j + 8)
  j = j + 11

For Each rng In wsOrigin.Range("C4:C10")
  rng.Copy wsTarget.Range("D" & k + 8)
  k = k + 11

Next
  
End Sub

-----------------------------------------------------
2行目以降の「For Each rng In」で引っかかってしまいました。
恥ずかしながら「For Each rng In」の意味も分かっていないので、
検索して調べてみます。

丁寧な対応を毎回ありがとうございます。

【54933】Re:マクロ初心者です。
お礼  kool E-MAIL  - 08/4/4(金) 16:09 -

引用なし
パスワード
   参考アドレス、ありがとうございます。

理解不足でネットでの検索の言葉にも迷っていたので、
とても助かりました。

これを読んで自分で考えてみます。
他の知識も得られそうですし^^

わいわいさん、
本当に丁寧な回答有難うございましたm(_ _)m

【54934】Re:マクロ初心者です。
発言  ν  - 08/4/4(金) 16:11 -

引用なし
パスワード
   >2行目以降の「For Each rng In」で引っかかってしまいました。
エラーは具体的(発生エラー内容)に書いた方が良いよ。
これに関しては、すぐに原因が解るから良いけど。

For Each xxx In よりも先ず、For 〜 Next について調べた方が
解りやすいかもしれないですね。

【54935】Re:マクロ初心者です。
お礼  kool E-MAIL  - 08/4/4(金) 16:14 -

引用なし
パスワード
   ひげくまさんへ

ご指摘ありがとうございました。
自分で考える前に次々聞いてしまっていた自分に反省しています。

不快な思いをさせてしまったのであれば、
すみませんでした。

【54936】Re:マクロ初心者です。
お礼  kool E-MAIL  - 08/4/4(金) 16:31 -

引用なし
パスワード
   こまめな返答ありがとうございます。


>エラーは具体的(発生エラー内容)に書いた方が良いよ。

ご指摘ありがとうございます。


>For Each xxx In よりも先ず、For 〜 Next について調べた方が
>解りやすいかもしれないですね。

For〜Nextについて調べてみます^^
vさんには、助言をたくさん頂き本当に感謝しています。
ありがとうございました。

【54937】Re:マクロ初心者です。
発言  ν  - 08/4/4(金) 17:37 -

引用なし
パスワード
   列が増える毎にカウンタ変数が増えるのはどうかなと思って
ちょっと作ってみた。
こんなことする必要は無いだろうけど。

――――――――――――――――――――――――――――――
Dim i As Long
Dim wsOrigin As Worksheet
Dim wsTarget As Worksheet
Dim rng As Range

Set wsOrigin = ActiveWorkbook.Worksheets("シートA")
Set wsTarget = ActiveWorkbook.Worksheets("シートB")

With wsOrigin
  For Each rng In .Range( _
            .Cells(4, 1), _
            .Cells(10, .Range("A4").End(xlToRight).Column) _
          )
    Select Case True
      '(元)A列 → (先)C列
      Case rng.Address Like "$A*"
        rng.Copy wsTarget.Range("C" & i + 8)
        i = i + 8

      '(元)B列 → (先)C列
      Case rng.Address Like "$B*"
        rng.Copy wsTarget.Range("C" & i + 3)

      '(元)C列 → (先)D列
      Case rng.Address Like "$C*"
        rng.Copy wsTarget.Range("D" & i + 3)

      '上記以外
      Case Else
        '何もしない
    End Select
  Next
End With
――――――――――――――――――――――――――――――

【54976】Re:マクロ初心者です。
お礼  kool E-MAIL  - 08/4/8(火) 10:02 -

引用なし
パスワード
   返事が遅くなってすみません。

回答ありがとうございました。
今皆さんから教えて頂いたマクロを
理解しようとしているところです。

是非参考にさせて頂きます。
本当にありがとうございますm(_ _)m

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