dポイントプレゼントキャンペーン実施中!

たびたび申し訳ございません。

先ほどエクセルでダブルクリックをすると順番に該当セル内の値が「有」→「無」→「空白」 となるマクロをご教授頂き、下記の内容で解決した者です。

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

A 回答 (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
    • good
    • 0
この回答へのお礼

ありがとうございます!早速取り掛かってみます!

お礼日時:2009/03/18 16:44

質問にあるコードを応用して、パターン化し


後はパターンを増やすだけと言う考え方は如何

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

質問のコードとよく見比べて、違いをよく理解すれば
必要な範囲に対しての処理の設定が簡単にできる様になると思います
    • good
    • 0
この回答へのお礼

ありがとうございます!自分が求めていたのはこちらでした。
すみません、初心者過ぎて連結させるときの
ElseIf Not Intersect
てのがわからなかったんですね。(^^;
少し理解が進みました。さらに勉強したいと思います。
ポイント付与は教えて頂いた側が優劣をつけるようで恐縮ですが、今回はいち早く救いの手を差し伸べてくださったNo.1様からつけさせて頂きます。No.3 hige_082様も本当にありがとうございました。

お礼日時:2009/03/18 23:47

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列のみでなく、複数行に同様の処理をそれぞれ当て込みたい場合、どのようにしたらよろしいでしょうか。
よろしくお願い致します。

補足日時:2009/03/18 15:46
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!