同じ質問・・・ということになるかもしれないのですが、この質問
http://oshiete1.goo.ne.jp/kotaeru.php3?q=116276
の回答の中の、VBA文で、A列に入力すると、B列に入力した時点の日付が自動的に入力されるというものなのですが、
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "Sheet1" Then 'Sheet1を変更
If Target.Count = 1 Then 'A列を変更
If Target.Column = 1 Then '1つのセルを変更
Application.EnableEvents = False 'イベントの発生を止める
If Target <> "" Then 'A列で入力した場合
Target.Offset(0, 1) = Format(Now(), "yyyy/mm/dd h:mm")
Else 'A列で消去した場合
Target.Offset(0, 1) = ""
End If
Application.EnableEvents = True
End If
End If
End If
End Sub
すごく使いたいのですが、自分のシート用にカスタマイズすることができません。
VBEのヘルプや、書籍で調べたのですが、どうしてもうまくいかないので、
質問させてください。
この場合、A列に入力するとB列に出るようになっているのですが、他の列で使いたい場合、どこをどう変えれば良いのでしょうか?
また、考え方(仕組み)として、どういう作業がされて自動的に出てくるようになっているのでしょうか?(これは勉強のために聞きたいのですが)
コメントがところどころに書いてもらっているのですが、勉強不足で申し訳ありませんが、すぐ使いたいVBAなので、どうか教えてください。
No.2ベストアンサー
- 回答日時:
追加の質問にお答えします。
複数の条件のいずれかを満たす場合は「OR」で連結が可能です。
例の場合ですと、A列、C列に値が入った時間を右隣のセルに入れるということを行う訳ですから、プログラムにすると、4行目が以下のように変わります。
If Target.Column = 1 or Target.Column = 3 Then
でよろしいかと思います。
遅くなって申し訳ありません。
本当にありがとうございます!!!
できました!うれしいです。
そうか、A列に入ったとき、または、C列に入ったとき・・・という風に考えるのですね~。教えていただくと単純ですが、自分で指示を考えるとなるとそういう風に思い浮かびません。何だか難しく考えてしまって・・・。
こんなこと、手入力すればいいことではないか!と思われるでしょうが、
いくつもの作業を同時に進めていますので、これで、現時点での数をメモを取るように入力するだけで、誰でも使える表ができました。
早速使えます。
本当にありがとうございました<(_ _)>
No.1
- 回答日時:
まずは、解説からです。
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列に入るというものを作りたいのです。
これは無理でしょうか?こうしたい場合、まったく別のマクロになってしまうのでしょうか?
すみません!!どうかお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
PowerPointで表の1つの列だけ...
-
LOOKUP関数を使えばいいのでし...
-
エクセルで二つの数字の小さい...
-
エクセルの表から正の数、負の...
-
エクセル 文字数 多い順 並...
-
50人を数回、グループ分けする...
-
エクセルで最初のスペースまで...
-
重複行を削除して数値を合算し...
-
Excelで、A列にある文字がB列...
-
A,B,C3種類の文字で無限列を作る
-
VBAで文字列を数値に変換したい
-
エクセルで文字が混じった数字...
-
コミックマーケットについて
-
Excel元に戻す方法を教えてくだ...
-
エクセルで休日日数・連休日数...
-
VBAでセル入力の数式に変数を用...
-
エクセルで2列のセルを連続して...
-
エクセルマクロ:複数列 重複...
-
エクセルかグーグルスプレッド...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
エクセル 同じ値を探して隣の...
-
VBAで文字列を数値に変換したい
-
エクセルの並び変えで、空白セ...
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
Excel、市から登録している住所...
-
A列がない・・・A列が非表示に...
-
エクセルの表から正の数、負の...
-
[関数得意な方]教えて下さい・...
-
エクセルの項目軸を左寄せにしたい
-
エクセル 時間帯の重複の有無
-
Excelにてある膨大なデータを管...
おすすめ情報