如何定义 Excel 单元格部分可见?

How define is Excel cell partially visible ?

是否可以使用 Excel 互操作来定义某些单元格是否部分可见?

我知道使用 Application.ActiveWindow.VisibleRange 我可以获得 sheet 的可见范围。 第 46 行的这个单元格包含在这个范围内,但我们是否有一些方法来定义单个单元格是否仅部分可见?

我们的加载项将一些文本插入到单元格中。我的任务是滚动一个选定的单元格以使其完全可见。如果我双击 Excel 中的这样的单元格,光标会出现在那里并且 sheet 会滚动一点,我想用 C# 代码做同样的事情。 到目前为止,我找到了定义用户使用最后一行的情况的方法(通过使用 Application.ActiveWindow.VisibleRange 并使用 Application.ActiveWindow.SmallScroll 滚动),但我不能保证最后一行总是部分可见 - 我不需要滚动完全可见的单元格。

我们可以使范围内的最后一个单元格部分可见,方法是使用 Application.Goto 将单元格置于页面顶部,然后使用 ActiveWindow.LargeScroll

向上翻页
Sub MakeLastCellPartiallyVisible(rCell As Range)
    Dim lastVRow As Long
    lastVRow = rCell.Row + rCell.Rows.Count - 1
    Application.Goto Reference:=Rows(lastVRow), Scroll:=True
    ActiveWindow.LargeScroll Down:=-1
End Sub

我的目标是滚动部分可见的单元格以查看整个单元格。如果我的代码将一些值插入 A46 单元格(有问题),我需要向下滚动它以查看整个单元格。 C#中的方法:

public void MakeCellVisible(int columnIndex, int rowIndex)
{
    var visibleRange = Application.ActiveWindow.VisibleRange;
    var lastColumn = visibleRange.Column + visibleRange.Columns.Count - 1;
    var lastRow = visibleRange.Row + visibleRange.Rows.Count - 1;

    int down, toRight;
    if (rowIndex == lastRow)
    {
        down = 1;
    }

    if (columnIndex == lastColumn)
    {
        toRight = 1;
    }

    if (0 != down || 0 != toRight)
    {
        Application.ActiveWindow.SmallScroll(Down: down, ToRight: toRight);
    }
}