Excel VBA質問箱 IV

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

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


1552 / 13645 ツリー ←次へ | 前へ→

【73448】指定回数分セルをコピー nonoka 13/1/11(金) 18:26 質問[未読]
【73449】Re:指定回数分セルをコピー UO3 13/1/11(金) 19:02 発言[未読]
【73485】Re:指定回数分セルをコピー nonoka 13/1/15(火) 1:26 回答[未読]
【73496】Re:指定回数分セルをコピー UO3 13/1/16(水) 10:01 発言[未読]
【73573】Re:指定回数分セルをコピー nonoka 13/1/23(水) 10:21 質問[未読]
【73578】Re:指定回数分セルをコピー nonoka 13/1/24(木) 11:54 お礼[未読]

【73448】指定回数分セルをコピー
質問  nonoka  - 13/1/11(金) 18:26 -

引用なし
パスワード
   いつもお世話になってます。
下記ご教授ください。


シート名 INPUT のH5のセルにコピーしたい回数が入ってます。
同シートのC5〜G5にコピーしたいセルが入力されています。
同シートのC7〜G7より下にH5に入っている回数をコピーしたいです。
コピーされたセルを別シート シート名 計画表 のC列〜G列の票の未入力部分に
コピーしたいです。
一発で計画表にコピー出来ればうれしいです。
計画表はどんどん追加していく形です。

質問が下手で申し訳ありませんが宜しくお願い申し上げます。

【73449】Re:指定回数分セルをコピー
発言  UO3  - 13/1/11(金) 19:02 -

引用なし
パスワード
   ▼nonoka さん:


計画表のレイアウトが不明ですが、いかではいかがですか?
なお、INPUTシートのH5に入力したとたんに自動実行ということが
お望みなら、そのように変更することもできます。

Sub Sample()
  Dim n As Long
  Dim shTo As Worksheet
  Dim z As Long
  
  Set shTo = Sheets("計画表")
  z = shTo.Range("C" & shTo.Rows.Count).End(xlUp).Row + 1
  
  With Sheets("INPUT")
    n = Val(.Range("H5").Value)
    If n > 0 Then
      Intersect(.Range("A1", .UsedRange).Offset(6), .Columns("C:G")).ClearContents
      .Range("C5:G5").Copy .Range("C7").Resize(n)
      .Range("C5:G5").Copy shTo.Range("C" & z).Resize(n)
    End If
  End With
  
  
End Sub

【73485】Re:指定回数分セルをコピー
回答  nonoka  - 13/1/15(火) 1:26 -

引用なし
パスワード
   UO3様
返信遅くなって申し訳ありません。

出来ました!ありがとうございます!
すこし改良したいのですが、
回数分コピーしたさらに下の行にC列から今度はF列までをコピーし
J5の数字をG列にそのまま表示させたものを計画表にコピーしたいです。
INPUTでコピーしたものはそのあと消去できると助かります。

最初に一度にお願いすればよかったのですが、
説明不足で申し訳ありません。
宜しくお願い申し上げます。

【73496】Re:指定回数分セルをコピー
発言  UO3  - 13/1/16(水) 10:01 -

引用なし
パスワード
   ▼nonoka さん:

おはようございます

まず、消去なんですが、
アップ済みのコードは最初にINPUTシートの前回の状態をクリアしています。
で、追加で【クリアもしたい】といわれるのは、処理後、ただちに(自動で)クリアしたいということですか?
もし、そうなら、アップ済みのコードは、元ネタから INPUTシートと軽薄表シートの両方にコピペしていますので
そもそもがINPUTシートへのコピペをやめればよろしいのですが?

なので、以下のコードでは、処理後、INPUTシートにはコピペしたものが残っている。
そこで、INPUT消去 を実行すればクリアされるという構えにしてあります。
なお、このクリア処理は、本体(Sample2)の中でも共通プロシジャとして使用します。

Sub Sample2()
  Dim n As Long
  Dim shTo As Worksheet
  Dim z1 As Long
  Dim z2 As Long
  Dim x As Long
  Dim c As Range
  Dim flag As Boolean
  
  Set shTo = Sheets("計画表")
 
  With Sheets("INPUT")
    Call Input消去
    z1 = 7         'INPUTのコピー開始行
    For Each c In .Range("H5,J5")
      x = 5          'コピー列数
      If flag Then x = 4   '2回目は4列
      n = Val(c.Value)
      If n > 0 Then
        z2 = shTo.Range("C" & shTo.Rows.Count).End(xlUp).Row + 1
        .Range("C5").Resize(, x).Copy .Range("C" & z1).Resize(n)
        .Range("C5").Resize(, x).Copy shTo.Range("C" & z2).Resize(n)
        If flag Then
          .Range("C" & z1).Offset(, x).Resize(n).Value = n
          shTo.Range("C" & z2).Offset(, x).Resize(n).Value = n
        End If
        flag = True     '次は2回目
        z1 = z1 + n     '2回目のINPUTコピー開始行
      End If
    Next
  End With
 
End Sub

Sub Input消去()
  With Sheets("INPUT")
    Intersect(.Range("A1", .UsedRange).Offset(6), .Columns("C:G")).ClearContents
  End With
End Sub

【73573】Re:指定回数分セルをコピー
質問  nonoka  - 13/1/23(水) 10:21 -

引用なし
パスワード
   返信遅くなってしまい申し訳ありません。

ご教授頂いたものを少し修正してトライしてみました。
1.2回目のコピーがセルK5に入っている回数コピーして
6列目にL5の数字を代入したいです。
現在下記では回数コピーまではできるのですが、K5の数字がそのまま入ってしまってます。
勉強不足で申し訳ありませんが宜しくお願い致します。

前回削除のマクロはOKです。2度手間になってますが、コピーした内容を確認出来るのでそのまま使用させて頂きます。


Sub Sample2()
  Dim n As Long
  Dim shTo As Worksheet
  Dim z1 As Long
  Dim z2 As Long
  Dim x As Long
  Dim c As Range
  Dim flag As Boolean
 
  Set shTo = Sheets("計画表")

  With Sheets("INPUT")
    Call Input消去
    z1 = 7         'INPUTのコピー開始行
    For Each c In .Range("J5,K5")
      x = 6          'コピー列数
      If flag Then x = 5   '2回目は5列
      n = Val(c.Value)
      If n > 0 Then
        z2 = shTo.Range("C" & shTo.Rows.Count).End(xlUp).Row + 1
        .Range("C5").Resize(, x).Copy .Range("C" & z1).Resize(n)
        .Range("C5").Resize(, x).Copy shTo.Range("C" & z2).Resize(n)
        If flag Then
          .Range("C" & z1).Offset(, x).Resize(n).Value = n
          shTo.Range("C" & z2).Offset(, x).Resize(n).Value = n
        End If
        flag = True     '次は2回目
        z1 = z1 + n     '2回目のINPUTコピー開始行
      End If
    Next
  End With

End Sub

Sub Input消去()
  With Sheets("INPUT")
    Intersect(.Range("A1", .UsedRange).Offset(6), .Columns("C:H")).ClearContents
  End With
End Sub

【73578】Re:指定回数分セルをコピー
お礼  nonoka  - 13/1/24(木) 11:54 -

引用なし
パスワード
   ▼UO3 さん:
すいません。追加で質問しましたが、考え方が間違っていたようで、
新規で質問を投稿いたしました。
ありがとうございました。
もし、お時間があるようでしたら、新規投稿した質問に対応して頂けるとうれしいです。

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