こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

在庫管理をIF関数によりさらに使いやすくしたい

お世話になります。 現在エクセルで2種類の在庫管理をしています
A1に日付け
A2 昨日のA製品在庫数(タイトル)    B2に数値
A3 今日のA製品在庫数 (タイトル)    B3に数値
A4   A製品 増減数(タイトル)       B4( B3ーB2)の結果
A5 昨日のB製品在庫数(タイトル)    B5に数値
A6 今日のB製品在庫数 (タイトル)    B6に数値
A7    B製品 増減数(タイトル)      B7(B6ーB5)の結果

翌日に入力する際 B3の数値をB2に数値を手で入力しています その後今日の数値をB3に入力をして 結果を出しています、 B製品も同様な作業していますが

 日付け欄が変化すればB3の数値がB2にコピー B6の数値がB5にコピー出来るように
したいのですが良い方法を教えて下さい 宜しくお願いします

投稿日時 - 2014-11-22 20:13:11

QNo.8833822

すぐに回答ほしいです

質問者が選んだベストアンサー

続けてお邪魔します。

>2回目以降が???うまく行きませんでした。

同じ日に何度ファイルを開いても変化はありません。(最初だけは変化します)
A1セルに入っている日付が「今日」と違う時(ブックを開いた日付と異なる時)に動くマクロですので、
A1セルの日付をご自身で変えない限りは1日に何度開いてもそのままになります。

※ 明日になればお望み通りの動きになるはずです。m(_ _)m

投稿日時 - 2014-11-25 13:10:59

ANo.6

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(6)

ANo.5

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

投稿日時 - 2014-11-24 06:55:48

補足

いま試行しましたら 1回成功しました 「わー!できた」喜んで
2回目以降が???うまく行きませんでした。再度新たにシートを作って
挑戦してみます。今後とも宜しくお願いします。

投稿日時 - 2014-11-24 23:19:17

-広告-

ANo.4

No.2・3です。

>コピー ペースト完了しましたが
>Enter
>押してもカーソルが点滅状態でその後の方法は どのようにしたらよいのですか?

↓の画像のような感じになりましたか?
それであれば、何もせずにその画面を閉じるだけです。

日付が変わらないと変化しませんが、A1セルがそのファイルを開いた日付になり、
「本日在庫数」のB列が「明日」になれば一つ上のセルに移動し、「本日在庫数」のセルは空白になります。

※ そのシートが選択されたときに動くマクロですので、何もする必要はありません。
※ 前回書いたように名前を付けて保存する場合は「マクロ有効ブック」として保存してください。m(_ _)m

投稿日時 - 2014-11-23 08:21:25

補足

まだ頑張って 何度も試行しているのですが 何故かうまく行きません
また頑張ってみます。
初心者が間違いそうな事 気が付きましたら教えて下さい。

投稿日時 - 2014-11-24 22:27:11

ANo.3

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

投稿日時 - 2014-11-23 00:14:07

補足

ご回答有り難うございました
コピー ペースト完了しましたが
Enter
押してもカーソルが点滅状態でその後の方法は どのようにしたらよいのですか?

投稿日時 - 2014-11-23 01:54:20

ANo.2

こんばんは!
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

投稿日時 - 2014-11-22 21:34:41

ANo.1

>>日付け欄が変化すればB3の数値がB2にコピー B6の数値がB5にコピー出来るように
したいのですが良い方法を教えて下さい 宜しくお願いします

IF関数でどうやって日付蘭が変化したと判るのでしょうか?

>>日付け欄が変化すればB3の数値がB2にコピー B6の数値がB5にコピー出来るように
マクロの記録で一連の操作を記録しボタンに貼り付け1日1回ボタンをクリックする様にしたらどうですか?

投稿日時 - 2014-11-22 20:25:11

補足

早々ご回答有り難うございます。
説明不足で申し訳ありません

一日ごとに夜一回作業するのですが
その際昨日の 日付けを新たに今日の日付けに手で入力します、
 

投稿日時 - 2014-11-22 21:12:12

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-