Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 获取可见的行和列编号_Excel_Vba - Fatal编程技术网

Excel 获取可见的行和列编号

Excel 获取可见的行和列编号,excel,vba,Excel,Vba,我的Excel工作表中有一个简单的宏,可以进行一些简单的计算。 为了获得更好的用户体验,我希望宏运行,并在运行完成后返回到用户激活宏之前所在的单元格,这样用户就不会在屏幕上看到任何更改 好吧,这并不难: Dim activeRow As Integer Dim activeCol As Integer Sub myCode activeRow = ActiveCell.Row activeCol = ActiveCell.Column ' code...

我的Excel工作表中有一个简单的宏,可以进行一些简单的计算。 为了获得更好的用户体验,我希望宏运行,并在运行完成后返回到用户激活宏之前所在的单元格,这样用户就不会在屏幕上看到任何更改

好吧,这并不难:

Dim activeRow As Integer
Dim activeCol As Integer

Sub myCode

    activeRow = ActiveCell.Row
    activeCol = ActiveCell.Column

    ' code...

    Cells(activeRow, activeCol).Select

End Sub
上述代码的问题在于,在运行宏之前可见的行和列在末尾不相同,因为宏可能已将工作表向左、向右、向上或向下滚动

例如,如果工作表中的第一行是15或16,则可以在显示器上看到单元格E26

因此,这里的问题是如何知道在用户显示器上可见的行号和列号

我想知道会是这样的:

Dim topLine As Integer
Dim bottomLine As Integer

topLine = ActiveWorksheet.GetVisibleGrid.TopLine
bottomLine = ActiveWorksheet.GetVisibleGrid.BottomLine

这里有一种方法。我所做的是保存活动单元格。在那里冻结窗格,然后返回到最后的单元格并解冻窗格

Dim cell As Range

    'save current cell and freeze panes here
    Set cell = ActiveCell
    ActiveWindow.FreezePanes = True

    'go somewhere way off screen
    Range("A1").Select

    'now go back and remove freeze panes
    cell.Select
    ActiveWindow.FreezePanes = False
re:“……为了获得更好的用户体验,我希望宏运行,并在运行完成后返回到用户激活宏之前所在的单元格,这样用户就不会在屏幕上看到任何更改。”

最简单的方法是永远不要使用
。选择
。激活
。很少有个别情况下,使用。
Select
比直接引用单元格和工作表更可取,而且实际上只需要其中的一半

有关摆脱依赖的方法,请参阅。选择并激活以实现您的目标


开始转换代码以消除。选择并激活。如果遇到问题,请将工作代码发布在此处或上。如果超过一页左右,就把它的各个部分贴出来。

这主意也不错+1个。很高兴看到您在船上远离。选择。很高兴能帮助您转换任何您觉得困难的部分。您介意检查一下这个吗?