[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAセーブデータの作り方』(もち)
sheet1のC1~3は都度内容が異なり、登録ボタンを押す度にsheet2の表ABC列へ上から順々にデータが転記されていく仕組みを作りたいです。
また、100行分使い切ったら元に戻って先頭(A2,B2,C2)から上書きさせたいです。
【流れ】
C1,C2,C3に入力→ 登録→ 別シートA2,B2,C2へ転記→
C1,C2,C3に入力→ 登録→ 別シートA3,B3,C3へ転記→
・・・
C1,C2,C3に入力→ 登録→ 別シートA101,B101,C101へ転記→
C1,C2,C3に入力→ 登録→ 別シートA2,B2,C2へ転記→
・・・
【シート構成】
データ入力シート"sheet1"
・都度異なる値が入る欄三つ(C1,C2,C3)
・登録ボタン
転記先シート"sheet2"
・セルA2~A101に値が入る表
最後に上書きした行数を別途セルに保存し、転記ごとに行数を1増やし101を超えたら1に戻す、という考え方で可能でしょうか?
また、可能だとしたらどのように記述したらよいでしょうか?
もしくはもっと簡単なやり方がある場合も教えてもらいたいです。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
> 最後に上書きした行数を別途セルに保存し、転記ごとに行数を1増やし101を超えたら1に戻す、という考え方で可能でしょうか?
はい、それで可能ですよ。 それ以上簡単な考え方は無いのでは?(うだうだ悩まず、コードを書いて試せば良いだけの話)
以下は、1〜100をループする例です。 2行目からがデータなら、この値に +1 した行を使えば良いですよね。
Range("A1").Value = Range("A1").Value Mod 100 + 1 (???) 2020/08/06(木) 17:46
Dim c As Range, r As Range For Each c In Sheets("Sheet2").Range("A2:A101") If c.Interior.Pattern = xlSolid Then Set r = c r.Resize(, 3).Value = Application.Transpose(Sheets("Sheet1").Range("C1:C3").Value) r.Interior.Pattern = xlNone If r.Row = 101 Then Sheets("Sheet2").Range("A2").Interior.Pattern = xlSolid Else r.Offset(1).Interior.Pattern = xlSolid End If Exit Sub End If Next c Sheets("Sheet2").Range("A2").Interior.Pattern = xlSolid 登録 End Sub (mm) 2020/08/06(木) 17:55
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.