- ベストアンサー
エクセル マクロ ダブルクリックで…(2)
たびたび申し訳ございません。 先ほどエクセルでダブルクリックをすると順番に該当セル内の値が「有」→「無」→「空白」 となるマクロをご教授頂き、下記の内容で解決した者です。 B列についての該当セルへの入力がなされるという内容だったのですが、実はC列にも同様の処理を致したく、またもや素人はなすすべが無くなってしまいました。 B列は「要」「不要」「請求」「空白」としたいと思います。 たびたび大変恐縮ですがよろしくご教授くださいませ。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("d1:d999")) Is Nothing Then Exit Sub With Target If .Value = "" Then .Value = "有" ElseIf .Value = "有" Then .Value = "無" ElseIf .Value = "無" Then .Value = "" End If End With End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 複数行に同様の処理をそれぞれ当て込みたい場合 たとえば、1~999行目のB、C列を対象とする場合なら Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If .Row > 999 Then Exit Sub '1000行以下の場合終了 If .Column = 2 Then 'B列の場合 Select Case .Value '値でケース分け Case "": .Value = "要" Case "要": .Value = "不要" Case "不要": .Value = "請求" Case "請求": .Value = "" End Select Cancel = True ElseIf .Column = 3 Then 'C列の場合 Select Case .Value '値でケース分け Case "": .Value = "有" Case "有": .Value = "無" Case "無": .Value = "" End Select Cancel = True End If End With End Sub
その他の回答 (2)
- hige_082
- ベストアンサー率50% (379/747)
質問にあるコードを応用して、パターン化し 後はパターンを増やすだけと言う考え方は如何 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("B1:B999")) Is Nothing Then With Target If .Value = "" Then .Value = "要" ElseIf .Value = "要" Then .Value = "不要" ElseIf .Value = "不要" Then .Value = "請求" ElseIf .Value = "請求" Then .Value = "" End If End With ElseIf Not Intersect(Target, Range("C1:C999")) 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 質問のコードとよく見比べて、違いをよく理解すれば 必要な範囲に対しての処理の設定が簡単にできる様になると思います
お礼
ありがとうございます!自分が求めていたのはこちらでした。 すみません、初心者過ぎて連結させるときの ElseIf Not Intersect てのがわからなかったんですね。(^^; 少し理解が進みました。さらに勉強したいと思います。 ポイント付与は教えて頂いた側が優劣をつけるようで恐縮ですが、今回はいち早く救いの手を差し伸べてくださったNo.1様からつけさせて頂きます。No.3 hige_082様も本当にありがとうございました。
- merlionXX
- ベストアンサー率48% (1930/4007)
BとC列を対象とし、ダブルクリックでそれぞれ違う文字を表示させればいいのですね? Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If .Column = 2 Then 'B列の場合 Select Case .Value '値でケース分け Case "": .Value = "要" Case "要": .Value = "不要" Case "不要": .Value = "請求" Case "請求": .Value = "" End Select Cancel = True ElseIf .Column = 3 Then 'C列の場合 Select Case .Value '値でケース分け Case "": .Value = "有" Case "有": .Value = "無" Case "無": .Value = "" End Select Cancel = True End If End With End Sub
補足
ありゃ、もとのB列のみのものとずいぶん違った手順になるのですね。 早速のご教授、ありがとうございます。 この場合、BとC列のみでなく、複数行に同様の処理をそれぞれ当て込みたい場合、どのようにしたらよろしいでしょうか。 よろしくお願い致します。
お礼
ありがとうございます!早速取り掛かってみます!