【问题标题】:Check if more than one cell selected检查是否选择了多个单元格
【发布时间】:2015-06-16 06:26:11
【问题描述】:

我想知道如何检查一个范围内是否有多个单元格被选中?

我有 3 个单元格我想检查范围是“A:B”和“D”,我正在尝试这段代码,但它对我不起作用。

If 3 - CountA(range) < 1 Then

我该怎么做?

【问题讨论】:

    标签: excel excel-2010 vba


    【解决方案1】:

    selected 范围是这样的:

    If 3-Selection.Cells.Count < 1 then
    

    或者,如果您可能选择了很多单元格,请使用这个:

    If 3-Selection.Cells.Countlarge < 1 Then
    

    【讨论】:

    • 很高兴您在选择所有单元格时添加了 .CountLarge 以防止溢出。
    【解决方案2】:

    如果您使用的是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
    

    【讨论】:

      【解决方案3】:

      我想你想尝试一下这些方面的东西

      Dim rng1 As Range
      Set rng1 = Range("A1:B1,D1")
      MsgBox 3 - rng1.Cells.Count
      

      【讨论】:

        【解决方案4】:
         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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-05
          • 2014-03-16
          • 2013-08-13
          • 1970-01-01
          相关资源
          最近更新 更多