[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『最終行から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 >
長くなりますが、今の記述をそのまま載せます。 テキストボックス等の名前を変えていますが、変数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
>ピンクさんの記述を理解し間違えていたらすみません・・。
ですね、失礼します。
(ピンク) 2020/05/14(木) 17:28
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.