
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
最も大事なのはこういうイベント処理では、必ずコードの
最初の実行行にブレークポイントをセットして
スッテプ実行追跡するのですけど、そうしていますか?
①名前を入力すると、日付が表示されず、入力したセルをクリックすると日付が表示される
恐らくWorksheet_Changeになってないのでは?
Worksheet_SelectionChangeの場合にそうなります。
②同じ名前を入力(ドラッグ)するとドラッグした分の日付が自動で入ってくる
複数セルがある場合、個別のセルに分解して
一つ一つ処理しなければなりません。
つまりドラッグしたセルが複数あるかを確認して
処理を分岐しないといけないので、改造が必要です。
Target.Countを確認してみてください。
③名前を消去すると、日付は消えないままで、消したセルをクリックすると日付が消える
これは症状が不明です。消去するとっていうのが
見た目には消えてもEnterキーを押すもしくは
別のセルを選択しないと登録されないのは判りますか?
No.4
- 回答日時:
>excelファイルを新規にして、教えていただいたコードを入れましたが同じ現象になります・・・
残念ながら私のローカルでは事象を再現できませんでした
#3にも書きましたが動作的にはWorksheet_SelectionChangeイベントに似ています
繰り返しになりますが Worksheet_Changeイベントで書かれていますか?
#2のコード(イベントプロシージャ)全てをシートモジュールにコピペされているという事であれば実行環境などによるものかも知れませんが私のスキルでは想像の範疇を超えていますので新たな回答をお待ちください
No.3
- 回答日時:
#2です
・・・
事象はPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)イベントの動作のようですが・・・・・
Private Sub Worksheet_Change(ByVal Target As Range)ですよね
新規ブックで試しても同じ事象でしょうか?
No.2
- 回答日時:
複数セル、コピペに対応でベタ打ちですけれど一例です
対象のシートモジュールに(同じイベントがある場合はそのままコピペではだめです)
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B:B,F:F")) Is Nothing Then Exit Sub
If Target.Row = 1 Then Exit Sub
Dim i As Long
Application.EnableEvents = False
If Target.Count > 1 Then
For i = 1 To Target.Count
If Target(i).Column = 2 Or Target(i).Column = 6 Then
If Target(i).Value <> "" Then
Target(i).Offset(, 1).Value = Format(Date, "yyyy/mm/dd")
Else
Target(i).Offset(, 1).Value = ""
End If
End If
Next
Else
If Target.Value <> "" Then
Target.Offset(, 1).Value = Format(Date, "yyyy/mm/dd")
Else
Target.Offset(, 1).Value = ""
End If
End If
Application.EnableEvents = True
End Sub
>プログラムを教えていただきたいです。
プログラムを考える場合もう少し条件定義をするべきだと思いますが
No.1
- 回答日時:
名前かどうかを判断する基準が不明なので、単純にB列やF列に入力があった場合、ということにしています。
標準モジュールではなく、対象となるSheetの方にこちらのマクロを加えてください。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim changedCell As Range
Dim currentDate As Date
' Check if changes occurred in column B (2) or column F (6)
If Target.Column = 2 Or Target.Column = 6 Then
' Check if the changed cell is not empty
If Not IsEmpty(Target.Value) Then
' Get the current date
currentDate = Date
' Update column C or G with the current date
If Target.Column = 2 Then
Target.Offset(0, 1).Value = currentDate
ElseIf Target.Column = 6 Then
Target.Offset(0, 1).Value = currentDate
End If
Else
' If the changed cell is empty, clear the corresponding date cell in column C or G
If Target.Column = 2 Then
Target.Offset(0, 1).ClearContents
ElseIf Target.Column = 6 Then
Target.Offset(0, 1).ClearContents
End If
End If
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
隣の枝がはみ出してきたら切ってもいい?最もやってはいけないことは?
「隣の木が越境してきて困るが、勝手に切ってはいけないと聞くし…」そう思っている方も多いだろう。実は、2023年4月1日に民法が改正され、この「越境枝」のルールが大きく変わった。 教えて!gooでも「境界から出て...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
i=cells(Rows.Count, 1)とi=cel...
-
Excel VBA マクロ ある列の最終...
-
エクセルvbaで、別シートの最下...
-
【Excel】指定したセルの名前で...
-
CountIf で","(カンマ)の数が...
-
Excelで指定した日付から過去の...
-
Excelのプルダウンで2列分の情...
-
DataGridViewの各セル幅を自由...
-
【VBA】シート上の複数のチェッ...
-
Excel VBAでいくつか質問があり...
-
EXCELのVBA-フィルタ抽出後の...
-
ExcelVBAを使って、値...
-
VBからEXCELのセルの値を取得す...
-
任意フォルダから画像をすべて...
-
特定のセルが空白だったら、そ...
-
Excel vbaで特定の文字以外が入...
-
EXCELで変数をペーストしたい
-
VBAマクロで結合セルを含む列に...
-
DataGridViewのセル編集完了後...
-
VBA実行後に元のセルに戻りたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
Excelで指定した日付から過去の...
-
VBA実行後に元のセルに戻りたい
-
i=cells(Rows.Count, 1)とi=cel...
-
任意フォルダから画像をすべて...
-
【Excel VBA】指定行以降をクリ...
-
【Excel】指定したセルの名前で...
-
エクセルvbaで、別シートの最下...
-
VBAでセルをクリックする回...
-
Excelのプルダウンで2列分の情...
-
DataGridViewの各セル幅を自由...
-
特定の文字を条件に行挿入とそ...
-
VBA ユーザーフォーム ボタンク...
-
TODAY()で設定したセルの日付...
-
VBからEXCELのセルの値を取得す...
-
特定行の色を変えたい(FlexGrid)
-
ExcelのVBAで数字と文字列をマ...
-
Excel vbaで特定の文字以外が入...
-
VBA初心者です。結合セルを保持...
おすすめ情報
回答いただいたみなさまありがとうございます。
どちらもいったん使わせていただいのですが、どちらも以下の現象が起こるのですが解消できないでしょうか。
①名前を入力すると、日付が表示されず、入力したセルをクリックすると日付が表示される
②同じ名前を入力(ドラッグ)するとドラッグした分の日付が自動で入ってくる
③名前を消去すると、日付は消えないままで、消したセルをクリックすると日付が消える(①の逆みたいな現象)
№2様
返信ありがとうございます。
excelファイルを新規にして、教えていただいたコードを入れましたが同じ現象になります・・・