同じ質問・・・ということになるかもしれないのですが、この質問
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセル 文字数 多い順 並...
-
エクセルで最初のスペースまで...
-
Excel、市から登録している住所...
-
お店に入るために行列に並んで...
-
エクセルの列を範囲選択しての...
-
エクセル(勝手に太字になる)
-
Excelで、A列にある文字がB列...
-
エクセル 時間帯の重複の有無
-
「B列が日曜の場合」C列に/...
-
エクセルで文字が混じった数字...
-
ペグソリティアの解法について
-
エクセルの関数(日数の平均の...
-
エクセル 同じ値を探して隣の...
-
ExcelのVBAで連番を振る。
-
条件付き書式の適用先が変更さ...
-
エクセルの複数条件に一致した...
-
エクセルで、数字の並びを ご...
-
一部の数式に「矛盾数式」と表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
エクセル(勝手に太字になる)
-
Excelで半角の文字を含むセルを...
-
エクセル 文字数 多い順 並...
-
2つのエクセルのデータを同じよ...
-
エクセルで文字が混じった数字...
-
文字列に数字を含むセルを調べたい
-
エクセル 時間帯の重複の有無
-
VBAで文字列を数値に変換したい
-
「B列が日曜の場合」C列に/...
-
エクセル 同じ値を探して隣の...
-
エクセルの項目軸を左寄せにしたい
-
エクセルで、列の空欄に隣の列...
-
お店に入るために行列に並んで...
-
Excel、市から登録している住所...
-
エクセルの並び変えで、空白セ...
-
オートフィルターをかけ、#N/A...
-
エクセルの表から正の数、負の...
おすすめ情報