OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

希望通りの回答があったのですが、カスタマイズできません。

  • すぐに回答を!
  • 質問No.180114
  • 閲覧数28
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 79% (51/64)

同じ質問・・・ということになるかもしれないのですが、この質問
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なので、どうか教えてください。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル8

ベストアンサー率 58% (23/39)

追加の質問にお答えします。

複数の条件のいずれかを満たす場合は「OR」で連結が可能です。
例の場合ですと、A列、C列に値が入った時間を右隣のセルに入れるということを行う訳ですから、プログラムにすると、4行目が以下のように変わります。

If Target.Column = 1 or Target.Column = 3 Then

でよろしいかと思います。
お礼コメント
fruit-gogo

お礼率 79% (51/64)

遅くなって申し訳ありません。
本当にありがとうございます!!!
できました!うれしいです。
そうか、A列に入ったとき、または、C列に入ったとき・・・という風に考えるのですね~。教えていただくと単純ですが、自分で指示を考えるとなるとそういう風に思い浮かびません。何だか難しく考えてしまって・・・。

こんなこと、手入力すればいいことではないか!と思われるでしょうが、
いくつもの作業を同時に進めていますので、これで、現時点での数をメモを取るように入力するだけで、誰でも使える表ができました。
早速使えます。
本当にありがとうございました<(_ _)>
投稿日時 - 2001-12-06 09:18:34
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル8

ベストアンサー率 58% (23/39)

まずは、解説からです。 1行目:関数宣言部分で引数はシートオブジェクト、レンジオブジェクトです。 2行目:シート名が「Sheet1」である場合、次の処理を行う 3行目:現在選択している範囲が1列である場合、次の処理を行う。 ※※※→質問のコメントは適切でないと思います。 4行目:選択している列がA列である場合、次の処理を行う 5行目:イベントの多発防止のおまじない。 6~7行目:選択セルに値 ...続きを読む
まずは、解説からです。
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

という意味です。いかがでしょうか?
補足コメント
fruit-gogo

お礼率 79% (51/64)

早速の回答、ありがとうございます!!
解説どおり、他の列で試してみたところ、うまくいきました!
私はどうも、見当違いの場所を変更していました。
このように解説していただくと、難解な作業をしているわけでもなく、こんなに便利になるんですねー。
VBA、がんばって勉強しようという気持ちがさらに強まりました。
丁寧な解説をいただいたのにさらに・・・というのは言いづらいのですが、もしよろしければ、これを同じシートで2つの部分で使うには、どこを変えればよいのか教えていただけないでしょうか?というのは、
私が作っているシートでは、開始時刻と、終了時刻という項目があり、その両方でできれば使いたいのです。(これはAから始まるとしますが)
 開始時刻    終了時刻
A列  B列  C列  D列
数   時刻   数  時刻  ←項目名
50  11:00  100  12;00
このように、A列に計測開始時刻の時点での数量を入れると、B列にその時刻が自動的に入り、計測終了時刻の時点での数をC列に入れると、その時刻が自動的にD列に入るというものを作りたいのです。
これは無理でしょうか?こうしたい場合、まったく別のマクロになってしまうのでしょうか?
すみません!!どうかお願いいたします。
投稿日時 - 2001-12-05 16:04:45

このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ