- ベストアンサー
エクセルで使いやすい在庫管理方法について
- エクセルで2種類の在庫管理を行っていますが、IF関数を使用してさらに使いやすくしたいです。
- 在庫管理のために、日付と製品の在庫数、増減数を表にまとめ、結果を自動的に計算する方法を考えています。
- 具体的には、日付が変化すると自動的に前日の在庫数をコピーし、当日の在庫数を入力し、増減数を計算するようにしたいです。同様に、他の製品の在庫管理も同じ方法で行いたいです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
続けてお邪魔します。 >2回目以降が???うまく行きませんでした。 同じ日に何度ファイルを開いても変化はありません。(最初だけは変化します) A1セルに入っている日付が「今日」と違う時(ブックを開いた日付と異なる時)に動くマクロですので、 A1セルの日付をご自身で変えない限りは1日に何度開いてもそのままになります。 ※ 明日になればお望み通りの動きになるはずです。m(_ _)m
その他の回答 (5)
- tom04
- ベストアンサー率49% (2537/5117)
No.2~4です。 何度もごめんなさい。 今までのコードは別Sheetを選択し、新たに「該当シート」をアクティブにした時だけ動くマクロですので、 ファイルを立ち上げた時には何も変化しませんでした。 もう一度やり直してください。 いま入っているシートのコードはすべて消去し、 No.4でアップしたVBE画面の左側にある「ThisWorkbook」をダブルクリック → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → 何もしないでVBE画面を閉じ、「マクロ有効ブック」で保存してください。 Private Sub Workbook_Open() 'この行から With Worksheets("Sheet1") '←「Sheet1」の部分は実際のSheet名に! If .Range("A1") <> Date Then .Range("A1") = Date .Range("B2") = Range("B3") .Range("B3") = "" .Range("B5") = Range("B6") .Range("B6") = "" End If End With End Sub 'この行まで ※ 今度は大丈夫だと思います。 試しにA1セルに「今日以外」の日付を手入力 → 上書き保存 → Bookを閉じて 新たにそのBookを立ち上げてみてください。 ※ 検証せず投稿してごめんなさいね。m(_ _)m
- tom04
- ベストアンサー率49% (2537/5117)
No.2・3です。 >コピー ペースト完了しましたが >Enter >押してもカーソルが点滅状態でその後の方法は どのようにしたらよいのですか? ↓の画像のような感じになりましたか? それであれば、何もせずにその画面を閉じるだけです。 日付が変わらないと変化しませんが、A1セルがそのファイルを開いた日付になり、 「本日在庫数」のB列が「明日」になれば一つ上のセルに移動し、「本日在庫数」のセルは空白になります。 ※ そのシートが選択されたときに動くマクロですので、何もする必要はありません。 ※ 前回書いたように名前を付けて保存する場合は「マクロ有効ブック」として保存してください。m(_ _)m
補足
まだ頑張って 何度も試行しているのですが 何故かうまく行きません また頑張ってみます。 初心者が間違いそうな事 気が付きましたら教えて下さい。
- tom04
- ベストアンサー率49% (2537/5117)
No.2です。 投稿後気づきました。 A1セルは実データにしなくては何も変化しませんね。 前回のA1セルの数式は入れないで、コードを↓に変更してください。 Private Sub Worksheet_Activate() 'この行から If Range("A1") <> Date Then Range("A1") = Date '←1行追加★ Range("B2") = Range("B3") Range("B3") = "" Range("B5") = Range("B6") Range("B6") = "" End If End Sub 'この行まで ※ ★印の行を1行追加しました。 これでA1セルは実データとなります。 尚、名前を付けて保存する時は ファイルの種類で「マクロ有効ブック」を選択し保存してください。 どうも失礼しました。m(_ _)m
補足
ご回答有り難うございました コピー ペースト完了しましたが Enter 押してもカーソルが点滅状態でその後の方法は どのようにしたらよいのですか?
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! VBAになってしまいますが、一案です。 ↓の画像のような配置になっているとします。 A1セル(セルの表示形式は好みの日付に)には =TODAY() という数式を入れておきます。 そして画面左下の操作したいシート見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペーストしておいてください。 Private Sub Worksheet_Activate() 'この行から If Range("A1") <> Date Then Range("B2") = Range("B3") Range("B3") = "" Range("B5") = Range("B6") Range("B6") = "" End If End Sub 'この行まで これでこのシートがアクティブになるたびにA1セル日付と「今日」が違う時だけ B2セルはB3セルの値に(B3セルは空白)、B5セルはB6セルの値に(B6セルは空白) になります。 当然B3・B6セルは手入力となります。 こんな感じではどうでしょうか?m(_ _)m
- torajyuri
- ベストアンサー率27% (16/58)
>>日付け欄が変化すればB3の数値がB2にコピー B6の数値がB5にコピー出来るように したいのですが良い方法を教えて下さい 宜しくお願いします IF関数でどうやって日付蘭が変化したと判るのでしょうか? >>日付け欄が変化すればB3の数値がB2にコピー B6の数値がB5にコピー出来るように マクロの記録で一連の操作を記録しボタンに貼り付け1日1回ボタンをクリックする様にしたらどうですか?
補足
早々ご回答有り難うございます。 説明不足で申し訳ありません 一日ごとに夜一回作業するのですが その際昨日の 日付けを新たに今日の日付けに手で入力します、
補足
いま試行しましたら 1回成功しました 「わー!できた」喜んで 2回目以降が???うまく行きませんでした。再度新たにシートを作って 挑戦してみます。今後とも宜しくお願いします。