[[20190418185942]] 『VBAについて』(ZUU) ページの最後に飛ぶ

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

 

『VBAについて』(ZUU)

教えてください。資材発注のファイルを作ろうとしているのですが、部品を一括でチェックを入れたあとに、いらない部品を抜くという事をしようとしています。A1がフィルターのドロップダウンリストの(すべて選択)みたいな動きをしたいです。
よろしくお願いします。

・A1とB1:B6をダブルクリックするとチェックマークが入り、もう一度ダブルクリックすると、空白になる
・A1にチェックマークが入ると、B1:B6にチェックマークを入れる、A1が空白になるとB1:B6も空白になる

という下記コードですが、A1にチェックマークを入れた状態で、B1:B6をダブルクリックしても、チェックマークが消えません。

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

 If Intersect(Target, Range("A1,B1:B6")) Is Nothing = False Then
 Cancel = True
 If Target.Value = ChrW(10003) Then
 Target.ClearContents
 Else
 Target.Value = ChrW(10003)
 End If
 End If
 End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Range("A1").Value = ChrW(10003) Then
    Range("B1:B6").Value = ChrW(10003)
    Else
    Range("B1:B6").Value = ""
    End If
End Sub

< 使用 Excel:Excel2013、使用 OS:Windows8 >


>・A1にチェックマークが入ると、B1:B6にチェックマークを入れる、A1が空白になるとB1:B6も空白になる

使うべきは、Changイベントではなですか。

 Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address <> "$A$1" Then Exit Sub

    Application.EnableEvents = False
    If Target.Value = ChrW(10003) Then
        Range("B1:B6").Value = ChrW(10003)
    Else
        Range("B1:B6").Value = ""
    End If
    Application.EnableEvents = True

 End Sub

(マナ) 2019/04/18(木) 19:57


BeforeDoubleClickだけのほうがすっきり?
 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim r As Range

    Set r = Range("A1,B1:B6")
    If Intersect(Target, r) Is Nothing Then Exit Sub
    Cancel = True

    If Target.Address <> "$A$1" Then Set r = Target

    If Target.Value = ChrW(10003) Then
         r.ClearContents
     Else
         r.Value = ChrW(10003)
     End If

 End Sub

(マナ) 2019/04/18(木) 20:13


マナ様
やりたい事ができました!本当にありがとうございました(^-^)
(今田) 2019/04/19(金) 08:57

コメント返信:

[ 一覧(最新更新順) ]


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