戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
セルに入力されている数値を元に、 結合セル範囲のデータを複製したい

    [189545] セルに入力されている数値を元に、 結合セル範囲のデータを複製したい-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ ゆりこ -(2019/06/13(22:44))
    □U R L/
      お世話になります
      
      セルに入力されている数値を元に、結合セル範囲のデータを
      複製したく思います
      
      EXCEL2016を利用しています
      
      A1〜D6、E1〜K6、A7〜H15、I7〜K15セルが結合されています
      I7〜K15セルには、1と表示されています
      
      N1〜Q6、R1〜X6、N7〜U15、V7〜X15セルが結合されています
      V7〜X15セルには、1と表示されています
      
      上記の結合セルは、共に同じデータになります。
      
      L1に入力されている数字からマイナス1をして、
      3行下方部分に上記範囲内のデータを複製し、
      1と表示されている数値を1ずつカウントアップしたいです
      
      L1に1を入れても複製せず、2以上を対象とします
      
      例えば2と入れたら、1回複製され1ずつカウントアップさせます
      
      元々はA1〜D6、E1〜K6、A7〜H15、I7〜K15がセル結合されていて、
      I7〜K15には、1と表示されています。
      
      元々はN1〜Q6、R1〜X6、N7〜U15、V7〜X15がセル結合されていて、
      V7〜X15には、1と表示されています。
      
      2と入力したら、下記の範囲で複製され、1と表示されているものを
      1ずつカウントアップして表示します
      
      A18〜D23、E18〜K23、A24〜H32セルを結合します
      I24〜K32セルを結合します(2と表示)
      
      N18〜Q23、R18〜X23、N24〜U32セルを結合します
      V24からX32セルを結合します(2と表示)
      
      VBAで行いたく思います
      
      ご教示ください
      
      考えたコードは下記になります
      全てできたわけではありません
      
      thisworkbookに下記があります
      
      Private Sub Workbook_Open()
      'ファイルが開いた際にメッセージ表示
              MsgBox "L1セルに印刷枚数を入力", vbInformation, "お知らせ"
      
      End Sub
      
      データがあるシートには、下記があります
      
      Private Sub Worksheet_Change(ByVal Target As Range)
       Const TgCel = "L1" ' <-- 特定セルを指定
        If Not Intersect(Range(TgCel), Target) Is Nothing Then
         If Range(TgCel) <> "" Then
          
           MsgBox "セル" & TgCel & " に値が入力", vbInformation, "お知らせ"
      
      
       Call test1   ' <-- 実行するマクロ指定
          End If
        End If
      End Sub
      
      module1には下記があります
      
      Sub test1()
      
      Dim n As Long
      
      n = Range("L1").Value
      
      If n < 2 Then Exit Sub
      
      With Range("A1:K15", "N1:X15")
      
           Range("A18:X" & Rows.Count).Clear 
           .Copy .Offset(1).Resize((n - 1) * 2)
          
      End With
      
      Application.CutCopyMode = False
      
      End Sub
      
      うまく説明できず、また長文になってしまい、見辛くて申し訳ございません
      
      ご教授の程お願い申し上げます
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [189548] Re[1]: セルに入力されている数値を元に、 結合セル範囲のデータを複製したい-

    記事引用/メール受信=OFF■

    □投稿者/ apple -(2019/06/14(00:17))
    □U R L/
      「2」の場合が例示されていますが、「3」の場合は、A18 〜 に加えて、A35 〜 にも複製という事ですか?
      
      わたしなら、標準モジュールではなく、同じシートモジュールにプロシージャを用意します。
      
      Private Sub Worksheet_Change(ByVal Target As Range) ' 変更してます
          Dim n As Long
          
          If Target.Address = "$L$1" Then
              n = Val(Target.Value)
              Select Case n
                  Case 2 To 10 ' 10 までに制限をしています。変更して下さい
                      MsgBox "セル L1 に値が入力", vbInformation, "お知らせ"
                      Call Test2(n)   ' <-- 実行するマクロ指定
                  Case Else
                      MsgBox "無効な入力です", vbInformation, "お知らせ"
              End Select
          End If
      End Sub
      
      Private Sub Test2(n As Long) ' 同じシートモジュールに
          Dim i As Long, j As Long
          
          j = 18
          Application.EnableEvents = False
          Range("A18:X" & Rows.Count).Clear
          With Range("A1:X15")
              For i = 2 To n
                  .Copy .Cells(j, 1)
                  .Cells(j, 1).Range("I7,V7").Value = i
                  j = j + 17
              Next
          End With
          Application.EnableEvents = True
      End Sub


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [189560] Re[2]: セルに入力されている数値を元に、 結合セル範囲のデータを複製したい-

    記事引用/メール受信=OFF■

    □投稿者/ ゆりこ -(2019/06/14(23:01))
    □U R L/

      apple様

      ありがとうございました
      助かりました

      一つだけ質問させて下さい
      同じシートモジュールにプロシージャーを用意するのが良いように感じました
      (appleさんの回答より)
      その理由を教えていただけませんか?
      調べたのですが、いまいちわかりませんでした




    [189561] Re[3]: セルに入力されている数値を元に、 結合セル範囲のデータを複製したい-

    記事引用/メール受信=OFF■

    □投稿者/ ゆりこ -(2019/06/15(00:15))
    □U R L/

      apple様

      何度も申し訳ありません

      セルに入力されている数値は、一つのセルだけでしたが

      2つのセルを用いて、form toの形で複製を行うことになってしまいました

      その場合ですが、このトピックタイトル内で再度質問をさせていただいてよいのか?
      それとも、一度解決にしてから、新規で質問をした方がよいのか?
      いかがでしょうか




    [189571] Re[4]: セルに入力されている数値を元に、 結合セル範囲のデータを複製したい-

    記事引用/メール受信=OFF■

    □投稿者/ apple -(2019/06/15(14:31))
    □U R L/
      >その理由を教えていただけませんか?
      わたしは、関連性の強いプロシージャどうしは同じモジュールに纏めるべきと考えます。
      そうする事で可読性がよくなると考えます。
      
      それよりも指摘したい点が、ゆりこさんの「test1」プロシージャです。
      その中で、
        n = Range("L1").Value
      と、n の値を改めて求めている事です。これは無駄です。
      引数付きのプロシージャにして、その値を指定すれば、そういう二度手間は省けます。
      
      >2つのセルを用いて、form toの形で複製を行うことになってしまいました
      上記について、わたしには「結果」のイメージが想像しがたいです。
      
      >その場合ですが、このトピックタイトル内で再度質問をさせていただいてよいのか?
      新規で質問の方が良いと思います。
      その際は、どういう場合に、どういう結果にしたいのか等、説明を十分にして下さい。
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [189572] Re[5]: セルに入力されている数値を元に、 結合セル範囲のデータを複製したい-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ ゆりこ -(2019/06/15(15:02))
    □U R L/

      apple様

      つたない質問に回答してくださってありがとうございました

      新規で質問をさせて頂きます



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G