代码之家  ›  专栏  ›  技术社区  ›  priyanka.sarkar

获取活动单元格是否在Excel的选定范围内可用?

  •  3
  • priyanka.sarkar  · 技术社区  · 14 年前

    我在和VSTO合作。在这种情况下,单击Excel工作表的按钮将显示输入框,我将得到所选范围。我想知道如何从excel工作表的活动单元格地址inputbox hac中获取所选范围。

    object objInputBox= Excel.Application.InputBox(prompt, field, Type.Missing, Type.Missing,
                    Type.Missing, Type.Missing, Type.Missing, 8);
    ExcelXP.Range selectedRange = objInputBox as Excel.Range;
    
    string rangeName = selectedRange.get_Address(Type.Missing, Type.Missing, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing); 
    
    string activeCell =Application.Application.ActiveCell.get_Address(true, true, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing);
    

    如何获取RangeName中的活动单元格地址?

    提前谢谢

    3 回复  |  直到 11 年前
        1
  •  3
  •   Todd Main    14 年前

    你可以这样做,用 Application.Intersect . 示例是vba,但可以很容易地移植到c。

    Sub TestinRange()
        Dim inputRange As Range
        Set inputRange = Worksheets(1).Range("B1:B5")
        Dim IsActiveCellInInputRange As Range
        Set IsActiveCellInInputRange = Application.Intersect(inputRange, ActiveCell)
        If IsActiveCellInInputRange Is Nothing Then
            Debug.Print "Nope, the ActiveCell is not within the Input Range"
        Else
            Debug.Print "Yep, the ActiveCell is within the Input Range. ActiveCell Address: " & ActiveCell.Address
        End If
    End Sub
    
        2
  •  1
  •   Nathan Fisher    14 年前

    效率不是很高,但应该可以。

    private bool IsActiveCellInRange(Range selectedRange)
    {
      foreach cell in selectedRange.Cells
        if (cell == activeCell)
          return true;
      }
      return false;
    }
    
        3
  •  1
  •   Community CDub    7 年前

    我不确定你的问题是对的,但是在这里找一下CellinnamedRange函数 http://www.cpearson.com/excel/excelM.htm