C# 检查是否选择了整个工作表?
如何检查用户是否选择了整个excel工作表?。 我试着用下面的方法C# 检查是否选择了整个工作表?,c#,visual-studio,excel,vsto,vba,C#,Visual Studio,Excel,Vsto,Vba,如何检查用户是否选择了整个excel工作表?。 我试着用下面的方法 selection.cells.count 但它给出了一个超出当前范围的例外 有没有办法做到这一点?如果您想测试UsedRange是否与当时的选择一致 您需要确保UsedRange已更新 如果没有范围选择,也需要考虑错误 像这样的东西也可以 错误的警告消息没有选择 对于相同的地址字符串,为True 对于不同的地址字符串为False 代码 我将剽窃brettdj的代码,并创建一个版本来测试是否选中了整个表单。虽然我对他使用字符串
selection.cells.count
但它给出了一个超出当前范围的例外
有没有办法做到这一点?如果您想测试UsedRange是否与当时的选择一致 您需要确保UsedRange已更新 如果没有范围选择,也需要考虑错误 像这样的东西也可以 错误的警告消息没有选择 对于相同的地址字符串,为True 对于不同的地址字符串为False 代码
我将剽窃brettdj的代码,并创建一个版本来测试是否选中了整个表单。虽然我对他使用字符串来包含真、假和失败值很感兴趣,但我还是选择布尔值,这样像我这样的人就不必太费劲了
Sub CheckSelection()
Dim IsMatch As Boolean
Dim ErrNum As Long
With ActiveSheet
On Error Resume Next
IsMatch = (.Range(.Cells(1), .Cells(.Rows.Count, Columns.Count)).Address = Selection.Address)
ErrNum = Err.Number
On Error GoTo 0
If ErrNum <> 0 Then
MsgBox "test failed: have you selected part of the sheet", vbCritical
Else
MsgBox IsMatch = True
End If
End With
End Sub
正如@TimWilliams在注释中指出的,如果选择整个工作表,计数将溢出一个int,即count属性,导致超出当前范围异常。要绕过此问题,请使用CountLarge属性。在C语言中,CountLarge属性是一个对象。要使用它,请将其放置在一个较长的位置
long cellCount = (long)selectedRange.Cells.CountLarge;
我意识到这是一个古老的讨论,但我来自谷歌搜索。对于其他任何人来说,更简单的方法可能就是使用.address。比如说
If Selection.address = Cells.address then Msgbox "You selected an entire sheet!"
2.你是指整个工作表,还是整个工作表的使用部分?.CountLarge可用于Tim Williams提出的Excel 2007+良好观点。尽管有人选择了正确的使用范围这一想法对我来说似乎很奇怪。可能交叉的电线:
If Selection.address = Cells.address then Msgbox "You selected an entire sheet!"