リポビタン Dって風邪に効きますよね、どうもoReです。
前回作成した、在庫管理の入出庫履歴シートに出力するVBAプログラムの
説明などをしていきます。
入出庫履歴シートに出力するVBAプログラムは
こんな感じで書きました。↓※一番上
Worksheets(“入出庫履歴”).Cells(Rows.Count,2).End(xlUp).Offset(1,0) = Now
Worksheets(“入出庫履歴”)
・Worksheets ウァークシィーツゥ
ワークシートを指定するときに使います。
Worksheets(“シート名”)
たとえば、Range(“A1”) = “oRe”と書いたとき、
シートが複数ある場合、どのシートのセルA1なのか
わかりませんよね?
シートを指定していない場合は、アクティブシートの
セルA1にoReが入ります。
※アクティブシートとは、表示しているシート
つまり、入出庫している時はデータベースシートが、
アクティブシートとなっているため、入出庫履歴シートを
指定しているわけです。
Cells(Rows.Count,2)
・Cells セェルズ ・Rows ロォゥズ ・Count カァゥントゥ
Cells
セルを指定するときに使います。
Cells(行,列)
Range(“A1”)は、セルA1ですよね?
セルA1をCellsで指定する場合は
Cells(1,1)となります。
セルC3は、Cells(3,3)てな感じです。
Cells(1,1) = “こまけぇこたぁいいんだよ”としても入力できます。
Rows
Rowsは、行を扱うときに使用します。
Rows(指定したい行番号)
シートの1行目を指定する場合はRows(1)となります。
Rowsのみの場合は、すべての行を指定します。
Count
Countは、データ等が何個あるか調べるとき使用します。
Rows.Countということは、
シートのすべての行が、何行あるのか調べています。
まとめ
Cells(Rows.Count,2)は、どこを指定しているのか?
Rows.Countでシートのすべての行は1048576行でしたとなります。
Cells(1048576,2)となり、セルB1048576ということです。
なぜ、Cells(1048576,2)と書かずにCells(Rows.Count,2)と
書くのか?
Excelのバージョンによって、最終行が違うんです。
私は、Excel2016を使用していますが、
もしかするとあなたの使っているExcelは
最終行が1048576ではないかもしれませんよ?
最終行が違う場合エラーの原因になるので、
Rows.Countを使用しています。
End(xlUp)
・End エンドゥ ・Up アプ
End(xlUp)は、たぶんExcelでよく使っている機能だと思います。
Ctrl+↑ これです。
Ctrlキーを押しながら↑キーです。
私は最近使うようになりました(照)
ちなみに、
↓・↘・→+パンチボタンで波動拳です。
アクティブセル(選択したセル)から、データが入っている
セルまでジャンプする機能ですよね。
Cells(Rows.Count,2).End(xlUp)ということは
セルB1048576から上にジャンプするということになります。
つまり、シート2列目のデータが入っている最終セルまで、
ジャンプすることになります。
そして、Offset(1,0)で下に1つ移動したセルを選択しています。
こうすることで、入出庫するたびに順次データが入った
最終セルの1つ下に、入出庫データを蓄積させることができます。
※『最終行まで蓄積されたらどうするの?』って知らんがな(笑)
そこはほら、自分でなんとかしてください(笑)
Now
・Now ナァゥ
Nowは、『今』という意味みたいです。
おじちゃんが若いころは、ナァゥイね!!とか言ってたけど、
知ってる? 今風だねみたいな感じw←このwがナァゥイでしょ!?
いや知ってるよ、今は『草』って書くんでしょ草
Nowは、パソコン内?の今の日時を取得します。
※もちろん、パソコンの日時が狂っていたら、
狂った日時が入出庫履歴に出力されます。
入出庫履歴VBAプログラム説明
どうゆう処理をしているか、わかったとおもいますが、
一応ざっくりと説明しておきます。※出庫処理
Worksheets(“入出庫履歴”).Cells(Rows.Count,2).End(xlUp).Offset(1,0) = Now
Worksheets(“入出庫履歴”).Cells(Rows.Count,3).End(xlUp).Offset(1,0) = TextBox1
Worksheets(“入出庫履歴”).Cells(Rows.Count,4).End(xlUp).Offset(1,0) = Knskcell.Offset(0, -1)
Worksheets(“入出庫履歴”).Cells(Rows.Count,5).End(xlUp).Offset(1,0) = Knskcell.Offset(0, 1)
Worksheets(“入出庫履歴”).Cells(Rows.Count,6).End(xlUp).Offset(1,0) = Knskcell.Offset(0, 2)
Worksheets(“入出庫履歴”).Cells(Rows.Count,7).End(xlUp).Offset(1,0) = Knskcell.Offset(0, 3)
Worksheets(“入出庫履歴”).Cells(Rows.Count,8).End(xlUp).Offset(1,0) = TextBox3 * 1
Worksheets(“入出庫履歴”).Cells(Rows.Count,9).End(xlUp).Offset(1,0) = “出庫”
↓こんな感じ
入出庫履歴シートの、2列目(B列)のデータが入っている最終セルの、1つ下に、今の日時を入れる 入出庫履歴シートの、3列目(C列)のデータが入っている最終セルの、1つ下に、入出庫者名を入れる 入出庫履歴シートの、4列目(D列)のデータが入っている最終セルの、1つ下に、部品№を入れる 入出庫履歴シートの、5列目(E列)のデータが入っている最終セルの、1つ下に、メーカーを入れる 入出庫履歴シートの、6列目(F列)のデータが入っている最終セルの、1つ下に、品名を入れる 入出庫履歴シートの、7列目(G列)のデータが入っている最終セルの、1つ下に、型式を入れる 入出庫履歴シートの、8列目(H列)のデータが入っている最終セルの、1つ下に、数量を入れる 入出庫履歴シートの、9列目(I列)のデータが入っている最終セルの、1つ下に、出庫を入れる
※入庫処理も同じ感じです。
おっと、わすれるところでした。
入出庫履歴VBAプログラムで、『んっ?なにこれ?』という
ところがありませんでしたか?
さすがです!!
Worksheets(“入出庫履歴”).Cells(Rows.Count,8).End(xlUp).Offset(1,0) = TextBox3 * 1
TextBox3は、入出庫数量なので数値を入力しますよね?
TextBox3*1これは、テキストボックスのデータに×1しています。
なぜかというと、テキストボックスは文字通り、
テキスト(文字列)を入力するボックスです。
つまり、テキストボックスに数値を入力すると、
文字列として扱われてしまいます。
文字列だと、計算ができなくなってしまうので、
×1をすることで、数値データに変換しています。
詳しくはこちら→TextBox*1について 【VBA在庫管理#31】
まとめ
入出庫履歴シートの、2列目(B列)のデータが入っている最終セルの、1つ下に、日時を入れる
次回 入出庫履歴プログラム、なんか、ちょっと…ねえ…
コメント