A列のセルをダブルクリックすると〇が付くようにしたいのですが、A列に1つだけ〇がつけられる仕組みにしたいのです。
現状では、指定した範囲のセルはいくらでも〇がつきます。
今作成してているVBAは次のとおりです。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
If Intersect(Target, Range("A2:A301")) Is Nothing Then Exit Sub
Select Case Target.Value
Case ""
Target.Value = "〇"
Case "〇"""
Target.Value = ""
End Select
End Sub
また、Aセルに〇が付くと同時に同じ行のM列に〇がつく。
=IF(A2="〇","〇","")
これについてはできるのですが、同時に、その行のBセルに入力の番号とL列の番号が一致した場合は、その行のM列のセルにも〇を付けたいのですが、そこがどのような条件で作成したらいいのか悩んでいます。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
ベストアンサー
返事よく理解せずすみません。
いずれかのセルをダブルクリックしたら
1.その行のA列に〇をつける、〇があれば消す
2.関数で
a.A列に〇があればM列に〇をつける
b.その行のB列の値でL列を検索しM列に検索したA列の〇ありなしを反映する
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim rngTarget As Range Dim rngFind As Range Dim Trow As Long If Target.Count > 1 Then Exit Sub '複数セル選択禁止? Trow = Target.Row If Cells(Trow, 1).Value = "" Then Cells(Trow, 1).Value = "〇" Else Cells(Trow, 1).Value = "" End If MaxRow = Cells(Rows.Count, 2).End(xlUp).Row For Trow = 2 To MaxRow '=IF(A3="〇","〇",IF(L3>0,IF(INDEX($A:$A,MATCH(L3,$B:$B))="〇","〇"," ")," ")) Cells(Trow, 13).Formula = "=IF(RC[-12]=""〇"",""〇"",IF(RC[-1]>0,IF(INDEX(C1:C1,MATCH(RC[-1],C2:C2))=""〇"",""〇"","" ""),"" ""))" Next End Sub
投稿2020/02/12 10:43
総合スコア392
0
2.その行のB列の値でL列を検索しM列にA1の〇ありなしを反映する
勝手な仕様つけてすみません。
ダブルクリックされた行のA列「作成」に〇をつける、消すを繰り返す。
M列は関数でM2から最終行までコピーする。(毎回上書きです)
マクロは、下記でよろしくお願いします。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim rngTarget As Range Dim rngFind As Range Dim Trow As Long If Target.Count > 1 Then Exit Sub '複数セル選択禁止? Trow = Target.Row If Cells(Trow, 1).Value = "" Then Cells(Trow, 1).Value = "〇" Else Cells(Trow, 1).Value = "" End If MaxRow = Cells(Rows.Count, 2).End(xlUp).Row For Trow = 2 To MaxRow '=IF(A2="〇","〇","") Cells(Trow, 13).Formula = "=IF(RC[-12]=""〇"",""〇"","" "")" Next End Sub
投稿2020/02/12 06:10
編集2020/02/12 07:10総合スコア392
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/12 07:12
2020/02/12 07:29
2020/02/12 07:38
0
いずれかのセルをダブルクリックしたら
1.その行のA列に〇をつける、〇があれば消す
2.その行のB列の値でL列を検索しM列にA1の〇ありなしを反映する
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim rngTarget As Range Dim rngFind As Range Dim Trow As Long If Target.Count > 1 Then Exit Sub '複数セル選択禁止? Trow = Target.Row If Cells(Trow, 1).Value = "" Then Cells(Trow, 1).Value = "〇" Else Cells(Trow, 1).Value = "" End If With ThisWorkbook.Worksheets(1).Range("L:L") Set rngTarget = .Find(Cells(Trow, 2).Value, LookAT:=xlWhole) If Not rngTarget Is Nothing Then '最初のセルのアドレスを覚える firstAddress = rngTarget.Address Do Cells(rngTarget.Row, 13).Value = Cells(Trow, 1).Value Set rngTarget = .FindNext(rngTarget) If rngTarget Is Nothing Then Exit Do Loop Until rngTarget.Address = firstAddress End If End With End Sub
投稿2020/02/08 14:55
編集2020/02/09 08:43総合スコア392
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/12 05:14
2020/02/12 05:57
2020/02/12 06:17
2020/02/12 06:45
0
ExcelVBA
1Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 2 Dim Rng As Range 3 4 If Target.Count > 1 Then Exit Sub 5 With Me.UsedRange 6 Set Rng = Intersect(.Columns(1), .Offset(1)) 7 End With 8 If Rng Is Nothing Then Exit Sub 9 If Intersect(Rng, Target) Is Nothing Then Exit Sub 10 11 Cancel = True 12 Rng.ClearContents 13 14 With Target.EntireRow 15 .Range("A1").Value = "○" 16 .Range("L1").Value = .Range("B1").Value 17 End With 18End Sub
数式は、
=IF(ISBLANK(B2),"",IF(B2=L2,"○",""))
とか。
投稿2020/02/04 07:30
総合スコア2163
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/05 04:31
0
ダブルクリック時の処理
VBA
1Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 2 Cancel = True 3 Range("A2:A301").Value = "" 4 Target.Value = "〇" 5End Sub
M2セル
Excel
1=IF(AND(A2="〇",B2=L2),"〇","")
これを全M列にコピペ
投稿2020/02/04 04:56
総合スコア17000
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/13 02:14