[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『最終行から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.