ExcelのVBAと呼ばれるものを使って
入力した横のセルに入力された時の時刻の表示方法について教えていただきたいです。
Excel初心者でこのVBAを触る事が初めてなのですが
自分と似た質問(Yahoo!知恵袋)のアンサーを頼りにVBAを入力したところ、
エラーが出てしまい、うまく進める事が出来ませんでした。
用語も詳しくないまま、思考錯誤したのですが、自分ではうまく出来なかったため、
こちらの場所をお借りして、詳しい方にぜひご教授いただければ幸いです。
やりたい事としては、
G列に入力した時、横のセルH列に入力された時点の時刻を表示
また、同じsheetで、O列に入力した時、P列に同じく時刻を表示したいです。
参照した方法では、日付表示となっておりますが、セルの[ホーム][数値]のバーから
時刻表示に変更できることは確認できています。
■参照した質問とアンサー
https://detail.chiebukuro.yahoo.co.jp/qa/questio …
下記引用↓
=================================
B列に入力し、A列に日付を書き込む場合
B1→A1
B2→A2
B3→A3
…
--------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
Application.EnableEvents = False
Target.Offset(, -1).Value = Now
Application.EnableEvents = True
End Sub
--------------------
こちらの方法をコピペして、AとBをそれぞれGとHに変えてみたのですが、
「コンパイルエラー;
修正候補:区切り記号 または」
と警告が表示され、1行目の「Target」部分が青く表示されてしまいました。
解決策ともしよろしければ、
VBAに入力するコードを教えていただけましたら、大変助かります。
質問に分かりにくい部分がありましたら申し訳ございません。
ご指摘いただければ助かります。
どうか、よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんにちは、
先ず初めにPrivate Sub Worksheet_Change(ByVal Target As Range) は
シートイベントでセルの値が変更された時に実行されます。
コードを書くモジュールは、実行したいシートモジュール(Excel Object)です。
VBエディタでシートオブジェクトをダブルクリックしてカーソル位置から下
参考 https://excel-master.net/macro-vba/excel-vba-mod …
標準モジュールに書き、ボタンなどから実行するとエラーが返り、機能しません。
ご質問の場合のコードは下記のようになりますが、
少し調べて頂き、調べても分からない所があれば、追記してください。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
With Application
If Not .Intersect(Target, Range("G:G")) Is Nothing Or Not .Intersect(Target, Range("O:O")) Is Nothing Then
.EnableEvents = False
' Target.Offset(, 1).Value = Format(Time, "hh:mm:ss")
Target.Offset(, 1).Value = Format(Time, "hh時mm分ss秒")
.EnableEvents = True
End If
End With
End Sub
Qchan1962さん
ご解答ありがとうございます。
初心者の私でも分かるお優しい説明で、自身の無知による勘違いに気が付けました!さらに解決するコードまで詳しく教えていただき、感謝の気持ちでいっぱいです。
この度は本当にありがとうございました!
No.4
- 回答日時:
一番ミスりやすいのって該当列のセルを単独で操作する場合は良いのですが、複数を纏めて処理(例えば範囲選択をして削除やクリアなど)に対する対策なのですが、どうして知恵袋でそれが漏れたのでしょうね。
結構ベテランの方のようですが。
めぐみんさん
ご解答ありがとうございます。
なるほど、そういう部分もあるのですね
知識もない自分には難しかったのですが、勉強になります!
この度はありがとうございました。
No.3
- 回答日時:
>こちらの方法をコピペして、AとBをそれぞれGとHに変えてみた
元ネタではなく、あなたが実際に試用しているコードを
コピペしてください。
余計な所をいじったのではないですか?
例えば
正:ByVal
誤:ByVaI
みたいに。
よろずやkinchanさん
ご解答ありがとうございます。
全くもってその通りでございました…!
決まりのコードであることも知らず、いじってしまっていました…
これでは、使えないわけですね。
この度は教えてくださり、本当にありがとうございます。
勉強になりました!
No.1
- 回答日時:
以下のマクロを登録してください。
登録はシートモジュールになります。
標準モジュールに登録してはいけません。
(上記の意味が分からない場合は、その旨補足してください)
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Column
Case 7 'G列の場合
Case 15 'O列の場合
Case Else
Exit Sub
End Select
Application.EnableEvents = False
Target.Offset(, 1).Value = Now '1列右側のセルに時刻を設定
Application.EnableEvents = True
End Sub
tatsumaru77さん
ご解答ありがとうございます。
私の一番知りたかった方法を簡潔に分かりやすく教えてくださり、本当に助かりました!ベストアンサーには解説をつけてくれた方とさせていただきましたが、一番理想のtatsumaru77さんのコードを使用させていただいております。
本当に、心から感謝しています。
この度は、本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) VBAについて教えてください 4 2022/11/10 12:44
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定のセルが空白だったら、そ...
-
エクセルVBAでコピーして順...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
エクセルVBAで結合セルの真ん中...
-
VBAでセルをクリックする回...
-
【Excel VBA】指定行以降をクリ...
-
【VBA】指定したセルと同じ値で...
-
同じマクロのプログラムなのに...
-
screenupdatingが機能しなくて...
-
マクロ 空白セルへの文字入力
-
DataGridViewのセル編集完了後...
-
Excel vbaで特定の文字以外が入...
-
指定した条件で行セルを非表示...
-
特定行の色を変えたい(FlexGrid)
-
実行時エラー438 オブジェクト...
-
エクセルマクロでアニメを作る...
-
DataGridViewの各セル幅を自由...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
TODAY()で設定したセルの日付...
-
EXCELで変数をペーストしたい
-
Excel VBA、 別ブックの最終行...
-
Excelのプルダウンで2列分の情...
-
VBA コピーして次の値まで貼り...
-
screenupdatingが機能しなくて...
-
エクセルVBAでコピーして順...
-
VBA初心者です。結合セルを保持...
-
セル色なしの行一括削除
-
VBAでセルをクリックする回...
-
Excel vbaで特定の文字以外が入...
-
DataGridViewの各セル幅を自由...
-
特定の文字を条件に行挿入とそ...
-
【VBA】指定したセルと同じ値で...
おすすめ情報