お世話になります。
先般、お教え頂きました別のダブルクリックイベントプロシージャと
下記の当日の日付を入力するという処理を同じシート上で行いたいのですが、VBエディターにどのように記述したら良いかわかりません。
当方、かなりの初心者です。
よろしくご教授くださいませ。
【新しく加えたい処理】
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("b4:C999")) Is Nothing Then Exit Sub
If ActiveCell = "" Then
ActiveCell = Date
Cancel = True
End If
End Sub
【もともと使っている処理】
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("h1:h999")) Is Nothing Then
With Target
If .Value = "" Then
.Value = "有"
ElseIf .Value = "有" Then
.Value = "無"
ElseIf .Value = "無" Then
.Value = ""
End If
End With
ElseIf Not Intersect(Target, Range("i1:i999")) Is Nothing Then
With Target
If .Value = "" Then
.Value = "要"
ElseIf .Value = "要" Then
.Value = "不要"
ElseIf .Value = "不要" Then
.Value = ""
End If
End With
End If
End Sub
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
この回答への補足
はい、それが、質問しながら自分でもやってみていたのですが…
やっぱりおかしいのでしょうね。セルを選択されるだけで、どれも実行されてくれません。
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("h2:h999")) Is Nothing Then
With Target
If .Value = "" Then
.Value = "有"
ElseIf .Value = "有" Then
.Value = "無"
ElseIf .Value = "無" Then
.Value = ""
End If
End With
ElseIf Not Intersect(Target, Range("i2:i999")) Is Nothing Then
With Target
If .Value = "" Then
.Value = "要"
ElseIf .Value = "要" Then
.Value = "不要"
ElseIf .Value = "不要" Then
.Value = ""
End If
End With
ElseIf Not Intersect(Target, Range("b2:C999")) Is Nothing Then
With Target
If .Value = "" Then
.Value = Date
Cancel = True
End If
End With
End Sub
二度も三度も同じようなことを、ほんとに恐縮です。。。
遅くなりまして大変申し訳ございませんでした。
ご丁寧に教えくださりましてありがとうございました。
まだどうして処理が実行されない場合があるのか、よくわかっていないのですが、複数の処理を同時に組み合わせてその問題が起こることがあるようです。
またよろしくお願いいたします。
No.4
- 回答日時:
前回、回答したものですが
#2さんのがダメで、#3さんがOKのようですが
基本的に両方の処理は同じです
違いは、処理の実行範囲だけですよ
これでは如何
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("h1:h999")) Is Nothing Then
With Target
If .Value = "" Then
.Value = "有"
ElseIf .Value = "有" Then
.Value = "無"
ElseIf .Value = "無" Then
.Value = ""
End If
End With
ElseIf Not Intersect(Target, Range("i1:i999")) Is Nothing Then
With Target
If .Value = "" Then
.Value = "要"
ElseIf .Value = "要" Then
.Value = "不要"
ElseIf .Value = "不要" Then
.Value = ""
End If
End With
ElseIf Not Intersect(Target, Range("b4:C999")) Is Nothing Then
With Target
If .Value = "" Then
.Value = Date
Cancel = True
End If
End With
End If
End Sub
これで#3さんと同じ範囲を処理します
>修正してみたのですが、なぜでしょうか。できないのです。
出来ないではなく、どう、うまく行かないのか書いた方が、解決が早いよ
今回の場合、処理的にはエラーは無いと思うので
ただ、B2:C3に日付を入力したくないのに、入力されてしまうと言うことですよね
この回答への補足
大変遅くなりもうしわけございません。
「できない」の内容ですが、なぜかダブルクリックをするとマクロの実行でなく、セルが選択されるだけなのでした。
ある実行を解除(VBAを削除)してエクセル再起動したら、別の処理は実行されましたが、、、。
コピペしているだけなので、それぞれの記述は間違っていないと思います。
ひとまず、お教え頂きました内容で処理は行われました。
ありがとうございます。
No.3
- 回答日時:
もう回答は出ていますが、以前回答した方法(Select Case)での一例です。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With Target
If .Row > 999 Then Exit Sub '1000行以下の場合終了
Select Case .Column '列でケース分け
Case 9 'I列の場合
Select Case .Value '値でケース分け
Case "": .Value = "要"
Case "要": .Value = "不要"
Case "不要": .Value = "請求"
Case "請求": .Value = ""
End Select
Cancel = True
Case 8 'H列の場合
Select Case .Value '値でケース分け
Case "": .Value = "有"
Case "有": .Value = "無"
Case "無": .Value = ""
End Select
Cancel = True
Case 2, 3 'B,C列の場合
If .Row < 4 Then Exit Sub '1~3行目の場合終了
.Value = IIf(.Value = "", Date, .Value) '空白なら日付
Cancel = True
End Select
End With
End Sub
できました!各項目の右に『'説明 』 を添付してくださったので、とても良くわかりました。自分の初めにトライしたやり方に固執してたのだと思います。
難しいですが、教えて頂いて実行できた時は本当に嬉しいですね。
また情けない質問をさせて頂くかも知れませんがよろしくお願い致します。
本当にありがとうございました。
No.2
- 回答日時:
#1です。
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("h2:h999")) Is Nothing Then
With Target
If .Value = "" Then
.Value = "有"
ElseIf .Value = "有" Then
.Value = "無"
ElseIf .Value = "無" Then
.Value = ""
End If
End With
ElseIf Not Intersect(Target, Range("i2:i999")) Is Nothing Then
With Target
If .Value = "" Then
.Value = "要"
ElseIf .Value = "要" Then
.Value = "不要"
ElseIf .Value = "不要" Then
.Value = ""
End If
End With
ElseIf Not Intersect(Target, Range("b2:C999")) Is Nothing Then
With Target
If .Value = "" Then
.Value = Date
Cancel = True
End If
End With
End If ' ←追加
End Sub
で、動いているようです。
この回答への補足
それが…
修正してみたのですが、なぜでしょうか。できないのです。
添削ばかり依頼するような形となってしまい大変申し訳ございません。
ファイルを使用する人がPCに柔軟な方ばかりでないため、なんとか、未知の領域のVBAに生意気に踏み込んでみたものの。。。
引き続き勉強は続けます。。。
(念のため、添付してみます。)
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("h2:h999")) Is Nothing Then
With Target
If .Value = "" Then
.Value = "有"
ElseIf .Value = "有" Then
.Value = "無"
ElseIf .Value = "無" Then
.Value = ""
End If
End With
ElseIf Not Intersect(Target, Range("i2:i999")) Is Nothing Then
With Target
If .Value = "" Then
.Value = "要"
ElseIf .Value = "要" Then
.Value = "不要"
ElseIf .Value = "不要" Then
.Value = ""
End If
End With
ElseIf Not Intersect(Target, Range("b2:C999")) Is Nothing Then
With Target
If .Value = "" Then
.Value = Date
Cancel = True
End If
End With
End If
End Sub
やはり間違っておりますでしょうか。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) エクセル VBAで複数セル選択時エラーになる問題 3 2022/10/04 02:40
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
EXCEL VBA マクロ 実行する度に...
-
メルカリのメルカードで買い物...
-
switch の範囲指定
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
Do~Loopした回数をカウントしたい
-
C言語 b += a ? 1 : 0; の意味
-
VBの質問#if 0 then ってどう...
-
UMLでの例外処理
-
実時間処理ってなんですか?
-
インタラクティブの反対語は?
-
リョウ・・・量?料?
-
findは動くがfindnextがマクロ...
-
VBAでセルに値が入力されるまで...
-
VB.NET Excelを読み込んでDataT...
-
Select Case文でこのようなこと...
-
月度は何て読みますか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
DoEventsがやはり分からない
-
UMLでの例外処理
-
月度は何て読みますか?
-
switch の範囲指定
-
VBの質問#if 0 then ってどう...
-
セルの値が0はクリアするマクロ
-
VB.NET Excelを読み込んでDataT...
-
Do~Loopした回数をカウントしたい
-
Loadイベント中にほかのイベン...
-
Select Case文でこのようなこと...
-
findは動くがfindnextがマクロ...
-
緊急です。 知り合いから50kgの...
-
リョウ・・・量?料?
-
理不尽、行き場のないイライラ...
おすすめ情報