[[20200514162240]] 『最終行からn行下までカウントアップ』(わっさん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『最終行からn行下までカウントアップ』(わっさん)

 マクロの記述について質問です。

 A〜E列までは文字列や数値などのデータが入っており
 カウントアップをしたいと考えています。

    A    B   C   D   E   F
 1 製品A   机  ***   ***   ***  1
 2 製品A   机  ***   ***   ***  2
 3 製品B  椅子  ***   ***   ***  1
 4 製品B  椅子  ***   ***   ***  2
 5 製品B  椅子  ***   ***   ***  3
 6 製品C   棚   ***   ***   ***  1
 7 
 8 
 9 

 上記のようになっており、***の箇所には何かしらのデータが
 入力されているとお考え下さい。

 各データはユーザーフォームを使ってデータを入力しており、
 問題のカウントアップの回数指定はテキストボックスで数値が
 入力されるようになっています。
 この表でA列〜F列までのデータの追記をしていきたいと考えています。
 A〜E列までの同じデータを指定行数繰り返すのはできたのですが
 製品ごとのカウントアップがうまくいきません。

 つきましては、上記の表に仮に製品Dを3個など登録するとして
 F7〜F9までにそれぞれ1〜3とカウントアップさせる方法を
 ご教示いただけないでしょうか?

 For nextやDo whileなど、調べながら試したのですが、どうにも
 うまくいきませんでした。

 お手数ではありますが、どうぞよろしくお願いいたします。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


> A〜E列までの同じデータを指定行数繰り返すのはできた
このコードにカウントアップのコードを足すことになるので、
このコードを教えてください。
製品名が変わるごとに変数の値を1にリセットして
同じ製品が繰り返すごとにその変数の値を1ずつふやして
F列に入力するということになるだろうと思います。
(あずき) 2020/05/14(木) 16:40

 長くなりますが、今の記述をそのまま載せます。
 テキストボックス等の名前を変えていますが、変数nの内容として指定している
 buynumberの部分が個数を入力するテキストボックスとなっています。

 Private Sub CommandButton1_Click()
    Dim rngTarget1 As Range
    Dim rngTarget2 As Range
    Dim rngTarget3 As Range
    Dim rngTarget4 As Range
    Dim rngTarget5 As Range
    Dim rngTarget6 As Range
    Dim n As Variant

    n = Me.buynumber.Text
    If IsNumeric(n) = False Then Exit Sub
    n = CLng(n)
    If n < 1 Then Exit Sub

    With ActiveSheet
        Set rngTarget1 = .Cells(.Rows.Count, "B").End(xlUp) _
                                    .Offset(1).Resize(n, 4)
        Set rngTarget2 = .Cells(.Rows.Count, "G").End(xlUp) _
                                    .Offset(1).Resize(n, 2)
        Set rngTarget3 = .Cells(.Rows.Count, "L").End(xlUp) _
                                    .Offset(1).Resize(n, 2)
        Set rngTarget4 = .Cells(.Rows.Count, "K").End(xlUp) _
                                    .Offset(1).Resize(n, 1)
        Set rngTarget5 = .Cells(.Rows.Count, "F").End(xlUp) _
                                    .Offset(1)
    End With

    With Me
        rngTarget1.Value = Array(.place.Text, _
                                                 .category.Text, _
                                                 .product.Text, _
                                                 .maker.Text, _
                                                 Data)
        rngTarget2.Value = Array(.buydate.Text, _
                                                .insertdate.Text, _
                                                Data)
        rngTarget3.Value = Array(.futan.Text, _
                                                .memo.Text, _
                                                Data)
        rngTarget4 = "=[@計算1]&[@計算2]"

    End With

    Range("I3").AutoFill Destination:=Range("I3:I" & Cells(4).CurrentRegion.Rows.Count)
    Range("J3").AutoFill Destination:=Range("J3:J" & Cells(4).CurrentRegion.Rows.Count)

    Dim Ctrl As Control
    For Each Ctrl In Controls
        If TypeName(Ctrl) = "TextBox" Then
            Ctrl.Value = ""
        ElseIf TypeName(Ctrl) = "ComboBox" Then
            Ctrl.Value = ""
        Me.place.SetFocus
        End If
    Next Ctrl

 End Sub
(わっさん) 2020/05/14(木) 16:50

 >仮に製品Dを3個など登録するとして
 >F7〜F9までにそれぞれ1〜3とカウントアップさせる方法

    n = 3
    製品 = "製品D"
    With Cells(Rows.Count, "A").End(xlUp).Offset(1)
        Cells(.Row, "A").Resize(n).Value = 製品
        Cells(.Row, "F").Value = 1
        If n > 1 Then Cells(.Row, "F").AutoFill Destination:=Cells(.Row, "F").Resize(n), Type:=xlFillSeries
    End With

(ピンク) 2020/05/14(木) 17:12


>ピンクさん

 説明不足で済みません。
 ユーザーフォームの中には、製品名を入力するテキストボックスなどもあり
 個数も毎回バラバラなため、テキストボックスに入力するようにしています。

 ですので、マクロの記述画面で直接 n=3などを直接記入するのは避けたいと考えています。

 もしピンクさんの記述を理解し間違えていたらすみません・・。
(わっさん) 2020/05/14(木) 17:19

rngTarget5に入れたいとして。
Dim i As Long
Set rngTarget5 = .Cells(.Rows.Count, "F").End(xlUp).Offset(1).Resize(n,1)
For i = 1 To n
rngTarget5.Cells(i).Value = i
Next i
(あずき) 2020/05/14(木) 17:20

 >ピンクさんの記述を理解し間違えていたらすみません・・。

 ですね、失礼します。

(ピンク) 2020/05/14(木) 17:28


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.