是否可以使用Excel互操作来定义部分单元格是否可见?
我知道使用Application.ActiveWindow.VisibleRange我可以获得可见的工作范围。 第46行的此单元格包含在此范围内,但是我们是否有一些方法可以定义单个单元格仅部分可见?
我们的加载项会将一些文本插入到单元格中。我的任务是滚动一个选定的单元格,使其完全可见。如果我在Excel中双击这样的单元格,光标将出现在那里,并且页面滚动了一点,我想用C#代码做同样的事情。
到目前为止,我找到了定义用户使用最后一行(通过使用Application.ActiveWindow.VisibleRange
并使用Application.ActiveWindow.SmallScroll滚动)的情况的方法,但我不能保证最后一行总是部分可见 - 我不需要滚动完全可见的单元格。
答案 0 :(得分:1)
我们可以使用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
答案 1 :(得分:0)
我的目标是滚动部分可见的细胞以便看到整个细胞。如果我的代码将一些值插入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);
}
}