- ベストアンサー
VBAでセルに入力した値に応じて別のセルに自動的に日付を入力する方法とは?
- 希望通りの回答があったのですが、カスタマイズできません。同じ質問ということになるかもしれないのですが、この質問の回答の中の、VBA文で、A列に入力すると、B列に入力した時点の日付が自動的に入力されるという方法について教えてください。
- VBAのヘルプや書籍で調べましたが、自分のシート用にカスタマイズする方法が見つかりませんでした。また、この方法がどのように動作するのか、どのような作業がされて自動的に日付が入力されるのかも教えていただきたいです。
- また、A列以外の列でも同様の方法を使いたい場合、どの部分を変更すればよいのかも教えていただけると幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
追加の質問にお答えします。 複数の条件のいずれかを満たす場合は「OR」で連結が可能です。 例の場合ですと、A列、C列に値が入った時間を右隣のセルに入れるということを行う訳ですから、プログラムにすると、4行目が以下のように変わります。 If Target.Column = 1 or Target.Column = 3 Then でよろしいかと思います。
その他の回答 (1)
- ahsblue
- ベストアンサー率58% (23/39)
まずは、解説からです。 1行目:関数宣言部分で引数はシートオブジェクト、レンジオブジェクトです。 2行目:シート名が「Sheet1」である場合、次の処理を行う 3行目:現在選択している範囲が1列である場合、次の処理を行う。 ※※※→質問のコメントは適切でないと思います。 4行目:選択している列がA列である場合、次の処理を行う 5行目:イベントの多発防止のおまじない。 6~7行目:選択セルに値が入っている場合、B列に日時設定 8~9行目:選択セルが空欄の場合、B列の日時を削除 11行目:イベント多発防止のおまじない解除 という感じですね! A列の変更は、4行目を変更します。 A=1、B=2、・・・Z=26、AA=27という感じです。 B列は、A列を起点にした場所を指定しています。 9行目がそれにあたりまして、offset(0,1)の部分です。 左に書いてる0の意味:行(縦方向)を表していまして、 1つ上の行=-1 同じ行=0 1つ下の行=1 右に書いてる1の意味:列(横方向)を表していまして、 1つ左の列=-1 同じ列=0 1つ右の列=1 という意味です。いかがでしょうか?
補足
早速の回答、ありがとうございます!! 解説どおり、他の列で試してみたところ、うまくいきました! 私はどうも、見当違いの場所を変更していました。 このように解説していただくと、難解な作業をしているわけでもなく、こんなに便利になるんですねー。 VBA、がんばって勉強しようという気持ちがさらに強まりました。 丁寧な解説をいただいたのにさらに・・・というのは言いづらいのですが、もしよろしければ、これを同じシートで2つの部分で使うには、どこを変えればよいのか教えていただけないでしょうか?というのは、 私が作っているシートでは、開始時刻と、終了時刻という項目があり、その両方でできれば使いたいのです。(これはAから始まるとしますが) 開始時刻 終了時刻 A列 B列 C列 D列 数 時刻 数 時刻 ←項目名 50 11:00 100 12;00 このように、A列に計測開始時刻の時点での数量を入れると、B列にその時刻が自動的に入り、計測終了時刻の時点での数をC列に入れると、その時刻が自動的にD列に入るというものを作りたいのです。 これは無理でしょうか?こうしたい場合、まったく別のマクロになってしまうのでしょうか? すみません!!どうかお願いいたします。
お礼
遅くなって申し訳ありません。 本当にありがとうございます!!! できました!うれしいです。 そうか、A列に入ったとき、または、C列に入ったとき・・・という風に考えるのですね~。教えていただくと単純ですが、自分で指示を考えるとなるとそういう風に思い浮かびません。何だか難しく考えてしまって・・・。 こんなこと、手入力すればいいことではないか!と思われるでしょうが、 いくつもの作業を同時に進めていますので、これで、現時点での数をメモを取るように入力するだけで、誰でも使える表ができました。 早速使えます。 本当にありがとうございました<(_ _)>