[[20200806154228]] 『VBAセーブデータの作り方』(もち) ページの最後に飛ぶ

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

 

『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

Sub 登録()
    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.