为了方便用户使用,我将SendKeys方法与InputBox一起使用,用于选择要用于计算的多个单元格。
我要避免让用户在单击每个单元格或按Shift-F8选择多个单元格时按住CTRL。
我希望InputBox弹出并选择不一定彼此相邻的单元格,而无需执行其他任何操作。
这是我所拥有的样品。
Sub CalculateIt()
Dim calcRange As Range
On Error Resume Next
SendKeys "+{F8}"
Set calcRange = Application.InputBox("Select the cells you would like to use.", Type:=8)
If Err.Number = 424 Then Exit Sub
Dim stuff As Double
For Each calcCell in calcRange
If IsNumeric(calcCell.Value) Then stuff = stuff + calcCell.Value
Next calcCell
MsgBox "The Solution: " & Sqr(stuff)
End Sub
我想避免使用SendKeys方法,因为我已经读到很多关于它的挑剔和脆弱的知识,并且它可能会引起问题。我遇到了一些无法使用的情况,无论如何我都必须按住CTRL或执行Shift-F8。
答案 0 :(得分:0)
可能的解决方案...在工作表中添加一个复选框,然后进入Microsoft Excel对象|。在“工作簿”窗口中,输入以下代码。如果选中了此复选框,那么用户单击每个单元格时,您要执行的任何公式都将变为
。Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim nbrCell As Double
If IsNumeric(ActiveCell.Value) Then nbrCell = ActiveCell.Value Else nbrCell = 0
If ActiveSheet.CheckBox1.Value = True Then ActiveSheet.Range("A1").Value = ActiveSheet.Range("A1").Value + nbrCell
End Sub
如果您担心用户可能不小心单击了错误的单元格并希望删除该值,则还可以添加第二个复选框来删除选定的单元格。