[[20200302145703]] 『複数のダブルクリックイベントを同一シートで使い』(MADY) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数のダブルクリックイベントを同一シートで使いたい』(MADY)

複数のダブルクリックイベントを同一シートで使いたいのですが、やり方がわかりません。

コードは1列にダブルクリックしたら●がでるようにする

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    If Intersect(Target, Range("u1:u200")) Is Nothing Then Exit Sub
    With Target
        Select Case .Value
            Case ""
                .Value = "●"
            Case "●"
                .Value = ""
        End Select
    End With
End Sub

指定したところでダブルクリックをしたらコメントを挿入する

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    Dim AddWord As String

    AddWord = "" 

    Cells(Target.Row, Target.Column).AddComment(AddWord).Visible = True

End Sub

この二つを一緒に同じシートで使うことは可能でしょうか?
また使える場合どのようなコードを使ったら2つ同時に使えるのでしょうか。
意味が分かりにくいかと思いますが、わかる方いらっしゃいましたらよろしくお願いします。

< 使用 Excel:Office365、使用 OS:Windows10 >


単純にくっつければよいのでは・・・?

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

  If Intersect(Target, Range("u1:u200")) Is Nothing Then Exit Sub
    With Target
        Select Case .Value
            Case ""
                .Value = "●"
            Case "●"
                .Value = ""
        End Select
    End With

  Dim AddWord As String
  AddWord = "" 
  Cells(Target.Row, Target.Column).AddComment(AddWord).Visible = True

 End Sub

このときはこっちのダブルクリックイベントを使いたいとかがないと
こうとしか書けない???
(えく) 2020/03/02(月) 15:13


すみません、2つめのコード1行抜けてました;

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Intersect(Target, Range("D10:G40")) Is Nothing Then Exit Sub
    Dim AddWord As String

    AddWord = "" 

    Cells(Target.Row, Target.Column).AddComment(AddWord).Visible = True

End Sub

別の行・列でダブルクリックのコードを使いたいという意味です。

(MADY) 2020/03/02(月) 15:17


2つ一緒に使う、というのは、どういう動作を期待していますか?
(1)u1:u200は●の処理で、他はコメントの処理
(2)u1:u200だった場合、●を付けて、コメントも付ける
(3)どのセルでもコメントを付けるが、更にu1:u200はセルの文字列を●にする

どれでもご自由にコーディングして構いませんが、どれがしたいのかでコードが変わってくるので、教えてくださいね。(追加されたコードを見ると、1番ですかね?)

とりあえず、共通して必要な事だけ書きます。

    If Intersect(Target, Range("u1:u200")) Is Nothing Then Exit Sub

これは、u1:u200の範囲外がダブルクリックされた場合は抜ける、というコード。 論理判定は Not を付けると逆になる事を利用すれば、以下のように書くこともできます。

    If Not Intersect(Target, Range("u1:u200")) Is Nothing Then
        With Target
            Select Case .Value
                Case ""
                    .Value = "●"
                Case "●"
                    .Value = ""
            End Select
        End With
    End If

これなら、ElseIf 文で、別な範囲だったら…、という風に別の処理を追加する事ができるでしょう。
(???) 2020/03/02(月) 15:18


???さん、うまくいきました!
助かりました。
詳しく書いてくださりとても勉強になりました。
本当にありがとうございました!!!!

(MADY) 2020/03/02(月) 15:22


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.