Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2013)
区分により、データの入力VBA
投稿日時: 22/12/30 16:09:06
投稿者: MAI-MAI

マクロ初心者の質問です。
宜しくお願い致します。
セルB2に区分を設けています。
社内、外注、関連会社、の3つです。
 
セルB5に注文日蘭を設けています。
セルE2には発行日(=TODAY())を設けています。
この注文日蘭に区分毎により、入力を分ける仕組みを
作成中ですが、苦戦していますので、ご教授ください。
社内→セルE2をCOPYもしくは、直接、=TODAY()を入力。
外注→"" NULLとして、手動で日付入力が出来る状態に
関連会社→"" NULLとして、手動で日付入力が出来る状態に
 
宜しくお願い致します。

回答
投稿日時: 22/12/30 17:20:45
投稿者: WinArrow

セルB2(区分)によって、
注文日(セルB5)の入力方法が異なる
ということでしょうか?
 
内容がいまいちよく分かりません。
 
マクロができたとして
まず、マクロを実行するには、
マクロの実行タイミングが必要です。
 
これは、どの様に考えているんですか?
 

回答
投稿日時: 22/12/30 17:24:58
投稿者: 半平太

>この注文日蘭に区分毎により、入力を分ける仕組みを
 
入力を分ける仕組みとは、具体的にどう言うことなんですか?
分けるのは単なる分岐処理でしょうから、「入力」の意味をご説明ください。
 
>手動で日付入力が出来る状態
単にほっとけば、普通そうなりますよね?

回答
投稿日時: 22/12/30 17:26:29
投稿者: WinArrow

それから
=TODY()
は、PCの本日の日付を取得する関数です。
 
たとえば、2022/12/1にPCを起動すると、
2022/12/1が取得されます。
 
2022/12/2のPCを起動すると
2022/12/2
に自動的に変わってしまいます。
通常、注文日は、固定の日になるはずですが、毎日、変わってしまってよいのでしょうか?

投稿日時: 22/12/30 17:51:27
投稿者: MAI-MAI

>セルB2(区分)によって、
>注文日(セルB5)の入力方法が異なる
>ということでしょうか?
→はい、
区分が
社内なら→セルE2をCOPYもしくは、直接、=TODAY()を入力。
外注なら→"" NULLとして、手動で日付入力が出来る状態に
関連会社なら→"" NULLとして、手動で日付入力が出来る状態に
 
 
>マクロができたとして
>まず、マクロを実行するには、
>マクロの実行タイミングが必要です。
>これは、どの様に考えているんですか?
→タイミングは
セルB2に区分を設けています、
社内、外注、関連会社、の3つの選択した
タイミングでマクロを実行です。
 
>それから
>=TODY()
>は、PCの本日の日付を取得する関数です。
>たとえば、2022/12/1にPCを起動すると、
>2022/12/1が取得されます。
>2022/12/2のPCを起動すると
>2022/12/2
>に自動的に変わってしまいます。
>通常、注文日は、固定の日になるはずですが、毎日、変わってしまってよいのでしょうか?
 →毎日、変わってOKです。
 
宜しくお願い致します。

回答
投稿日時: 22/12/30 18:12:31
投稿者: WinArrow

>→毎日、変わってOKです。
  
これから入力するデータは、問題ないですが、
それまで入力したデータが自動的に変わってしまってもよい
ということでしょうか?
 
セルB2の選択が終了したら、
セルB5にカーソルがう移動する
ということでよいのですか?
その時B5に何か入っていたら、
何かするのですか?
 
※セルに何も入っていないことは、空白といいます。
NULLは間違いです。

回答
投稿日時: 22/12/30 18:22:20
投稿者: WinArrow

シートモジュールに
Sheet1
とうモジュールがあります。
 
この中に、次のようなコードを記述します。
仕様説明
「セルB2の値が変ったら、カーソルをB5に移動する」
だけです。
 
>セルE2を複写する
は、説明不十分ですので、抜いてあります。
 

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) <> "B2" Then Exit Sub
    If Target.Value = "" Then Exit Sub
    Me.Range("B5").Select
End Sub

投稿日時: 22/12/30 21:20:41
投稿者: MAI-MAI

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) <> "B2" Then Exit Sub
    If Target.Value = "" Then Exit Sub
    Me.Range("B5").Select
End Sub
仕様説明
「セルB2の値が変ったら、カーソルをB5に移動する」
だけです。

ありがたいのですが…
説明不十分? 説明が伝わっていませんね…
 
区分が
社内なら→セルE2をCOPYもしくは、直接、=TODAY()を入力。
外注なら→"" NULLとして、手動で日付入力が出来る状態に
関連会社なら→"" NULLとして、手動で日付入力が出来る状態に
なりません。
 
宜しくお願い致します。

回答
投稿日時: 22/12/30 21:42:53
投稿者: WinArrow

MAI-MAI さんの引用:

区分が
社内なら→セルE2をCOPYもしくは、直接、=TODAY()を入力。

 
もしくは・・・・・って、なに?
条件の説明は、無いのですか?
 
MAI-MAI さんの引用:

外注なら→"" NULLとして、手動で日付入力が出来る状態に
関連会社なら→"" NULLとして、手動で日付入力が出来る状態に
なりません。

 
カーソルがそのセルに
移動すれば、手入力はできますよね?
 

投稿日時: 22/12/30 22:04:09
投稿者: MAI-MAI

仕様説明
「セルB2の値が変ったら、カーソルをB5に移動する」
→この仕様は求めていません。
 
ありがとうございました。

投稿日時: 22/12/30 22:11:01
投稿者: MAI-MAI

カーソルがそのセルに
移動すれば、手入力はできますよね?

どうでもいいことで
目的は
区分が
社内なら→セルE2をCOPYもしくは、直接、=TODAY()を入力。
外注なら→"" NULLとして、手動で日付入力が出来る状態に
関連会社なら→"" NULLとして、手動で日付入力が出来る状態に
です。
目的が違う。
自分に酔っていますね…

回答
投稿日時: 22/12/30 22:12:00
投稿者: WinArrow

あたしは、これまでと致します。

投稿日時: 22/12/30 22:33:26
投稿者: MAI-MAI

利用規約に基づき、投稿は削除されました。

回答
投稿日時: 22/12/31 07:43:20
投稿者: taitani
投稿者のウェブサイトに移動

引用:
稿者: WinArrow
あたしは、これまでと致します。
→逃げるんですね。
 相変わらず、依頼者の要求を聞けないんですね… 

 
これはひどいですね。。。
依頼者って、、、我々はあなたから何も依頼されていないし、回答者の皆さんは、無償で忙しい時間の合間にあなたの「質問」に答えようとしているわけです。
そういう態度ならだれからも回答もらえないでしょうね。

投稿日時: 22/12/31 08:05:53
投稿者: MAI-MAI

ありがとうございます。