如何利用RightClick功能在表格中选择多个单元格进行计算?

时间:2018-07-31 18:08:41

标签: excel excel-vba

我有一个看起来像这样的表:

enter image description here

Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("C25:C35", "I25:I35")) Is Nothing Then
    If Target.Cells.Count = 1 Then
        Cancel = True
        Sheets("Sheet1").Range("G42") = Target.Value

Cancel = True
Target.Interior.Color = vbGreen
   End If
End If
End Sub

当我右键单击CLTV表中的任何单元格时,它将突出显示绿色,并自动填充下面黄色显示的单元格中的值。我可以选择多个单元格,所有单元格都以绿色突出显示,但是,右键单击的最后一个单元格将自动填充“总购买/Char.LLPAs(#2):”字段中的值。

enter image description here

我希望实现的是能够右键单击表格中的多个单元格(所有单元格都如示例中突出显示),并以某种方式将其添加到选择的单元格0.250 + 0.375 + 0.250 + 0.500并自动填充总计到“总购买/Char.LLPA(#2):”字段中。

有可能吗?

先谢谢了。

1 个答案:

答案 0 :(得分:1)

尝试一下-我想这就是您想要的?需要更多澄清

Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Dim cell As Range

If Not Intersect(Target, Range("C25:C35", "I25:I35")) Is Nothing Then

    If Target.Cells.Count = 1 Then

        Cancel = True
        Sheets("Sheet1").Range("G42") = 0
        Target.Interior.Color = vbGreen

        For Each cell In Range("C25:C35", "I25:I35")
            If cell.Interior.Color = vbGreen Then
                Sheets("Sheet1").Range("G42") = Sheets("Sheet1").Range("G42") + cell.Value
            End If
        Next cell

    End If

End If

End Sub

要重置所有颜色,请将其分配给按钮或单独运行:

Sub ResetColors()

Sheets("Sheet1").Range("G42") = 0

With Range("C25:C35", "I25:I35").Interior
    .Pattern = xlNone
    .TintAndShade = 0
    .PatternTintAndShade = 0
End With

End Sub