この入出庫履歴VBAプログラムどうゆう処理してるの? 【VBA部品在庫管理#07】

Excel VBA 部品在庫管理アイキャッチ画像部品在庫管理

リポビタン 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)となります。

ExcelCells画像

セル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キーを押しながら↑キーです。

 

えっ!? 使ってない・だ・と・・・

oReびっくり

私は最近使うようになりました(照)

 

ちなみに、

↓・↘・→+パンチボタンで波動拳です。

 

アクティブセル(選択したセル)から、データが入っている
セルまでジャンプする機能ですよね。

Cells(Rows.Count,2).End(xlUp)ということは

セルB1048576から上にジャンプするということになります。

 

つまり、シート2列目のデータが入っている最終セルまで、
ジャンプすることになります。

Excelジャンプ画像

 

そして、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プログラムで、『んっ?なにこれ?』という
ところがありませんでしたか?

oReのぞき見

さすがです!!

Worksheets(“入出庫履歴”).Cells(Rows.Count,8).End(xlUp).Offset(1,0) = TextBox3 * 1

TextBox3は、入出庫数量なので数値を入力しますよね?

TextBox3*1これは、テキストボックスのデータに×1しています。

なぜかというと、テキストボックスは文字通り、
テキスト(文字列)を入力するボックスです。

つまり、テキストボックスに数値を入力すると、
文字列として扱われてしまいます。

文字列だと、計算ができなくなってしまうので、
×1をすることで、数値データに変換しています。

詳しくはこちら→TextBox*1について 【VBA在庫管理#31】

 

まとめ

Worksheets(“入出庫履歴”).Cells(Rows.Count,2).End(xlUp).Offset(1,0) = Now
入出庫履歴シートの、2列目(B列)のデータが入っている最終セルの、1つ下に、日時を入れる
テキストボックスで数値を扱うときは、×1しましょう。

バーコードリーダー説02

次回 入出庫履歴プログラム、なんか、ちょっと…ねえ…

ExcelVBA部品在庫管理【目次】へ戻る

コメント

タイトルとURLをコピーしました