【发布时间】:2015-06-16 06:26:11
【问题描述】:
我想知道如何检查一个范围内是否有多个单元格被选中?
我有 3 个单元格我想检查范围是“A:B”和“D”,我正在尝试这段代码,但它对我不起作用。
If 3 - CountA(range) < 1 Then
我该怎么做?
【问题讨论】:
标签: excel excel-2010 vba
我想知道如何检查一个范围内是否有多个单元格被选中?
我有 3 个单元格我想检查范围是“A:B”和“D”,我正在尝试这段代码,但它对我不起作用。
If 3 - CountA(range) < 1 Then
我该怎么做?
【问题讨论】:
标签: excel excel-2010 vba
selected 范围是这样的:
If 3-Selection.Cells.Count < 1 then
或者,如果您可能选择了很多单元格,请使用这个:
If 3-Selection.Cells.Countlarge < 1 Then
【讨论】:
如果您使用的是Worksheet_Change(ByVal Target As Range) 或Worksheet_SelectionChange(ByVal Target As Range),请使用以下代码:
If InStr(Target.Address, ":") > 0 Or InStr(Target.Address, ",") > 0 Or InStr(Target.Address, ";") > 0 Then
这将检查所选范围是否为例如:
`A1;C1` (Cells A1 and C1 are selected) or
`E1:E4` (E1 to E4 are selected)
有时使用";",有时使用",",以便我们同时检查它们。
您可以使用您在代码中定义的范围来代替Target,例如:
If InStr(MyRange.Address, ":") > 0 Or InStr(MyRange.Address, ",") > 0 Or InStr(MyRange.Address, ";") > 0 Then
【讨论】:
我想你想尝试一下这些方面的东西
Dim rng1 As Range
Set rng1 = Range("A1:B1,D1")
MsgBox 3 - rng1.Cells.Count
【讨论】:
Dim SelectedRng As Range, SelectedRngStr As String
Set SelectedRng = Range(Target.Address) ' Or Range("A1:A2"), whatever
If SelectedRng.Cells.Count = 1 Then
SelectedRngStr = SelectedRng.Value
Else
Debug.Print "SelectedRng.Cells.Count = " & SelectedRng.Cells.Count
End If
【讨论】: