• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル クリックで加算したい)

エクセルでクリックしたセルを加算する方法

このQ&Aのポイント
  • エクセルでB1~B4とB6~B8に記入された数値をクリックして加算し、結果をB10に表示する方法を教えてください。
  • また、クリックしたセルに色を付ける方法についても教えてください。
  • さらに、B1~B4とB6~B8のセルにはそれぞれ1回しか加算できないようにする方法も知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! >クリックした和を・・・ とありますが、セルデータを変更したい場合、セルを選択しただけで マクロが実行されてしまいますので、ダブルクリックではどうでしょうか? 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてセルをダブルクリックしてみてください。 尚、セル色は「黄色」にしています。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'この行から Dim i As Long, j As Long, myFlg, vL If Application.Intersect(Target, Rows(1 & ":" & 8)) Is Nothing _ Or Target.Row = 5 Then Exit Sub Cancel = True j = Target.Column Cells(10, j) = "" If Target.Row <= 4 Then Range(Cells(1, j), Cells(4, j)).Interior.ColorIndex = xlNone Target.Interior.ColorIndex = 6 For i = 6 To 8 If Cells(i, j).Interior.ColorIndex <> xlNone Then myFlg = True vL = Cells(i, j) Exit For End If Next i If myFlg = True Then Cells(10, j) = vL + Target End If Else Range(Cells(6, j), Cells(8, j)).Interior.ColorIndex = xlNone Target.Interior.ColorIndex = 6 For i = 1 To 4 If Cells(i, j).Interior.ColorIndex <> xlNone Then myFlg = True vL = Cells(i, j) Exit For End If Next i If myFlg = True Then Cells(10, j) = vL + Target End If End If End Sub 'この行まで ※ 当然のことながらダブルクリックするセルは数値セルとします。m(_ _)m

tomoharu007
質問者

お礼

ありがとうございました。 想像通りのものができました。 急いでいたので大変助かりました。

その他の回答 (1)

  • kichi8000
  • ベストアンサー率41% (660/1584)
回答No.2

クリックセルの色を変えるマクロと、色のあるセルの合計は別にしました。 Sheetタブ見出しで  右クリック - コードの表示 - VBA画面 マクロをコピーして貼り付け Private Sub Worksheet_SelectionChange(ByVal Target As Range) If IsArray(Target) Then Exit Sub '複数セル If Intersect(Target, Range("1:8")) Is Nothing Then Exit Sub '入力無し If Target.Row > 8 Or Target.Row = 5 Then Exit Sub '行判定 Application.EnableEvents = False 'マクロの再実行停止 COL = RGB(255, 255, 0) '背景カラーの値 TgtR = Target.Row TgtC = Target.Column If TgtR >= 1 And TgtR <= 4 Then Range(Cells(1, TgtC), Cells(4, TgtC)).Interior.ColorIndex = xlNone Target.Interior.Color = COL ElseIf TgtR >= 6 And TgtR <= 8 Then Range(Cells(6, TgtC), Cells(8, TgtC)).Interior.ColorIndex = xlNone Target.Interior.Color = COL End If Rows("10:10").Dirty Application.EnableEvents = True 'マクロの再実行許可 End Sub 画面上の挿入メニューから標準モジュールを選択 プロジェクトウインドウの 標準モジュール-Module1 をダブルクリック モジュール(ユーザーワークシート関数)を貼り付け Function SumColor(ByVal 計算範囲, 条件色 As Long) SumColor = 0 For x = 1 To 計算範囲.Rows.Count If 計算範囲.Rows(x).Interior.Color = 条件色 Then SumColor = SumColor + 計算範囲.Rows(x) End If Next End Function Function RGBColor(ByVal R, G, B) As Long RGBColor = (R + (G + B * 256) * 256) End Function VBAウインドウを閉じます。 計算結果セルA10に入力 =SumColor( A1:A8, RGBColor(255, 255, 0) ) SumColor:単一計算範囲、判定カラー値  判定カラーと一致する背景色のセルを合計 RGBColor:Rカラー、Gカラー、Bカラー  RGB3色カラーをカラー値へ変換

tomoharu007
質問者

お礼

できました。 想像通りのものができました。 本当にありがとうございました。

関連するQ&A