[[20171009172302]] 『データの登録と蓄積』(すち) ページの最後に飛ぶ

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

 

『データの登録と蓄積』(すち)

はじめまして!初心者です。みなさまのお力をお借りしたいです┏○゛

A,B,Cの種類のものがそれぞれ20個ずつ(No.1~20)あります。
これを使用するたびに登録フォームで登録し、別のブックにデータを蓄積したいのです。
イメージはこんなかんじです。
ABCいずれかチェックか丸ポチで選択

No.を記入

登録ボタンで登録終了
日付も一緒に自動登録

そして、1つを12回使用するたびに通知してもらわなければなりません。
例「12回使用しました」

ちょっとややこしいのですが、どなたかできる方いらっしゃいましたらおしえて下さい。
宜しくお願いしますm(_ _)m

< 使用 Excel:Excel2010、使用 OS:unknown >


イメージはわかりました。
登録フォームとデータを蓄積するシートのレイアウトを説明してください。

(マナ) 2017/10/09(月) 17:51


ありがとうございます!

登録フォーム

今日の日付
○A ○B ○C

   □
  登録

□(長方形)は数字を入れるところです

データ蓄積

        A                              B                 C
No.     1      2 3 4…   1 2 3 4…    1 2 3 4… 
回数   1日付
       2日付

こんな感じにできますでしょうか?

(すち) 2017/10/10(火) 07:20


すみません、エクセルは2013でOSはwindows 7でした。
(すち) 2017/10/10(火) 16:15

こんな感じでできますが…
目的のセルに直接データ(日付)を手入力したほうがよくないですか?

Sheet1が、
1)オプションボタン3個
2)コマンドボタン1個
3)A3セルに番号を入力(1〜20)

Sheet2が転記先とします。

 Private Sub CommandButton1_Click()
    Dim 番号 As Long
    Dim 転記先列 As Long
    Dim 転記先セル As Range

    With Range("a3")
        番号 = .Value
        .ClearContents
        If 番号 < 1 Or 番号 > 20 Then
            MsgBox "番号が間違っています"
            .Select
            Exit Sub
        End If
    End With

    If OptionButton1.Value = True Then
        転記先列 = 2 + 番号 - 1
    ElseIf OptionButton2.Value = True Then
        転記先列 = 22 + 番号 - 1
    Else
        転記先列 = 42 + 番号 - 1
    End If

    Set 転記先セル = Worksheets("Sheet2").Cells(Rows.Count, 転記先列).End(xlUp).Offset(1)
    転記先セル.Value = Date
    If 転記先セル.Row - 2 > 11 Then MsgBox "12回使用しました"
    Application.Goto 転記先セル

 End Sub

(マナ) 2017/10/10(火) 20:20


ありがとうございます!
すみません、注文が多くて申し訳ないのですが

・Aのデータはシート2、Bのデータはシート3、Cのデータはシート4に
・12回以降ずっと通知されてしまうので12の倍数回のみ表示に
・登録ボタンを押してもシート1の画面のまま

という風に変更、追加できますでしょうか?

申し訳ございませんがよろしくお願いいたしますm(_ _)m
(すち) 2017/10/11(水) 09:37


>という風に変更、追加できますでしょうか?

まずは現在のコードの理解が先だと思います。

(マナ) 2017/10/11(水) 19:20


すみません、初心者なので分からないコードは調べて理解したつもりです…
しかし、上記の事は私には出来なかったのでどうにかお力をお貸しいただけたらと思い質問させて頂きました。
不快な思いをされたのなら申し訳ありませんでした。
答えて頂きまして本当にありがとうございました。
(すち) 2017/10/11(水) 23:47

3つ目は最後の行を消せばできましたね。
ちゃんと理解できてなかったです。
すみませんでした。
(すち) 2017/10/12(木) 10:13

どのオプションボタンが選択されているかで
シート名をかえるとよいです。

 Sub test()
    Dim シート名 As String

    If OptionButton1.Value = True Then
        シート名 = "Sheet2"
    ElseIf OptionButton2.Value = True Then
        シート名 = "Sheet3"
    Else
        シート名 = "Sheet4"
    End If

    MsgBox シート名 & " に転記します"

 End Sub

 Sub test2()
    Dim i As Long

    For i = 1 To 10
        If i Mod 3 = 0 Then
            MsgBox i & " は3の倍数"
        End If
    Next

 End Sub

(マナ) 2017/10/12(木) 20:26


返信遅れてしまい申し訳ございません。

マナ様のを参考に書いてみたのですが、どうやら最後の文が間違えているようです。

 Private Sub CommandButton1_Click()
    Dim 番号 As Long
    Dim 転記先列 As Long
    Dim 転記先セル As Range
    Dim シート名 As String

    With Range("a3")
        番号 = .Value
        .ClearContents
        If 番号 < 1 Or 番号 > 20 Then
            MsgBox "番号が間違っています"
            .Select
            Exit Sub
        End If
    End With

    If OptionButton1.Value = True Then

        シート名 = "Sheet2"
        転記先列 = 2 + 番号 - 1

    ElseIf OptionButton2.Value = True Then
        シート名 = "Sheet3"
        転記先列 = 2 + 番号 - 1
    Else
       シート名 = "Sheet4"
       転記先列 = 2 + 番号 - 1
    End If

    Set 転記先セル = Worksheets(シート名).Cells(Rows.Count, 転記先列).End(xlUp).Offset(1)
    転記先セル.Value = Date

  If 転記先セル.Row - 2 Mod 3 = 0 Then MsgBox "12回使用しました"

 End Sub

初心者なもので基本的なところが間違えているかもしれませんがどうかご教授くださいませm--m
(すち) 2017/10/16(月) 09:58


Modで割り算したときの余りを求めることができます。

 Sub test3()
    Dim i As Long

    For i = 1 To 10
        If i Mod 3 = 0 Then
            MsgBox i & " は3の倍数"
       ElseIf i Mod 5 = 0 Then
            MsgBox i & " は5の倍数"
        End If
    Next

 End Sub

 Sub test4()
    Dim i As Long

    i = 10
    MsgBox 2 Mod 3
    MsgBox i + 2 Mod 3
    MsgBox (i + 2) Mod 3

 End Sub

あと、↓は、If〜end ifの外に記述でもよいです(どの条件でも同じ処理なので)。

 >転記先列 = 2 + 番号 - 1

(マナ) 2017/10/16(月) 20:34


マナ様

ありがとうございました!
何とかなりそうです^^

とても勉強になりました。

またご縁がありましたらよろしくお願いいたしますm--m
(すち) 2017/10/17(火) 12:54


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.