[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『空白を探して、そこから転記をはじめる。』(マイマイ)
空白を探して、そこから転記をはじめる。
すでにデータが入っている"売上高"シートがあります。
注文情報のユーザーフォームを作ってあり、日付・購入者氏名・モール・商品科目・商品名・数量・送料・値引き・クーポンの9個の記入項目があります。
最後に登録を押すと"売上高"シートに各項目が転記されます。
その転記の際、売上高の空白部分から順番に転記されるようにしたいです。
現在以下のよう書いています。
上手く動作して空白を見つけてくれることもあるのですが、元データを上書きしてしまうことが結構多いです。
どのように直したらいいでしょうか。
注文情報のコード
Private Sub 登録_Click()
y = 2
Do While Cells(y, 1) <> ""
y = y + 1
Loop
Sheets("売上高").Cells(y, 1).Value = 購入日.Value
Sheets("売上高").Cells(y, 2).Value = 氏名.Value
Sheets("売上高").Cells(y, 4).Value = モール.Value
Sheets("売上高").Cells(y, 5).Value = 種別.Value
Sheets("売上高").Cells(y, 6).Value = 商品名.Value
Sheets("売上高").Cells(y, 7).Value = 数量.Value
Sheets("売上高").Cells(y, 12).Value = 送料.Value
Sheets("売上高").Cells(y, 13).Value = 値引き.Value
Sheets("売上高").Cells(y, 14).Value = クーポン.Value
End Sub
Private Sub Form_Load()
Me.購入日.Value = Date Me.購入日.Format = "yyyy/mm/dd"
End Sub
Private Sub UserForm_Initialize()
商品科目.RowSource = "リスト!P8:P19" Me.購入日 = Format(Date, "yyyy/mm/dd") End Sub
Private Sub 購入日_AfterUpdate()
With Me.購入日
If IsDate(.Value) Then .Value = Format(.Value, "yyyy/mm/dd") End If End With
End Sub
Private Sub 商品科目_Change()
商品名.List = Sheets("リスト").Range(商品科目.Value).Value End Sub
関係ないところもありますが、なにが悪いのか分からないため書いてるものは全て記載しました。
売上高シート例
|[A] |[B] |[C] |[D] |[E] |[F] |[G] |[H] |[I] |[J] |[K] |[L] |[M] |[N] |[O] |[P] |[Q] |[R] |[S] |[T] |[U] |[V] [1] |日付 |購入者氏名|顧客コード|モール|商品科目|商品名|個数|単価|売上|単原価|原価|送料|値引き|クーポン|限界利益|総売上|総限界利益|限界利益率|判定|JANコード|商品管理番号|No. [2] |2019/1/1|佐藤 |43466佐藤 |楽天 |食塩 |A | 4|1000|4000| 300|1200| 720| 0| 0|2080 |4000 |2080 |52% |○ | | |21 [3] |2019/1/1|鈴木 |43466鈴木 |楽天 |ランプ |Q | 1|3980|3980| 1110|1110|1000| 0| 0|1870 |3980 |1870 |47% |△ | | |103 [4] |2019/1/1|吉田 |43466吉田 |amazon|食塩 |A | 1|1000|1000| 300| 300| 360| 0| 0|340 |1000 |340 |34% |× | | |21 [5] |2019/1/1|山下 |43466山下 |amazon|食塩 |B | 1|8900|8900| 3000|3000|2500| 0| 0|3400 |8900 |3400 |38% |× | | |22 [6] |2019/1/1|高橋 |43466高橋 |Yahoo!|バスソルト |V | 1| 800| 800| 200| 200| 0| 0| 0|600 |2300 |1500 |65% |○ | | |50 [7] |2019/1/1|高橋 |43466高橋 |Yahoo!|食塩 |C | 1|1500|1500| 600| 600| 510| 0| 0|390 |2300 |1500 |65% |○ | | |23 [8] |2019/1/1|山田 |43466山田 |自社 |食塩 |A | 2|1000|2000| 300| 600| 510| 0| 0|890 |2000 |890 |44% |△ | | |21 [9] | | | | | | | | | | | | | | | | | | | | | |
この場合、9行目から転記されるようにしたいです。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
この方が高速かと。
(通りすがりのおっさん) 2019/03/05(火) 10:22
最初の空白セルを探すのではなく、最後の入力セルを探すと良いでしょう。
Private Sub 登録_Click()
n = Cells(Rows.Count, 1).End(xlUp).Row
Range("A" & n + 1).Select
Sheets("売上高").Cells(y, 1).Value = 購入日.Value
Sheets("売上高").Cells(y, 2).Value = 氏名.Value
Sheets("売上高").Cells(y, 4).Value = モール.Value
Sheets("売上高").Cells(y, 5).Value = 種別.Value
Sheets("売上高").Cells(y, 6).Value = 商品名.Value
Sheets("売上高").Cells(y, 7).Value = 数量.Value
Sheets("売上高").Cells(y, 12).Value = 送料.Value
Sheets("売上高").Cells(y, 13).Value = 値引き.Value
Sheets("売上高").Cells(y, 14).Value = クーポン.Value
End Sub
(通りすがりのおっさん) 2019/03/05(火) 11:31
>通りすがりのおっさん様
返信ありがとうございます。
処理が早いのはとても助かります。
記述通り組んでみたのですがエラーが出てしまいました。
Private Sub 登録_Click()
n = Cells(Rows.Count, 1).End(xlUp).Row
Range("A" & n + 1).Select
➡ Sheets("売上高").Cells(y, 1).Value = 購入日.Value
ここで『アプリケーション定義またはオブジェクト定義エラーです。』
(マイマイ) 2019/03/05(火) 12:40
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.