Excel 获取可见的行和列编号
我的Excel工作表中有一个简单的宏,可以进行一些简单的计算。 为了获得更好的用户体验,我希望宏运行,并在运行完成后返回到用户激活宏之前所在的单元格,这样用户就不会在屏幕上看到任何更改 好吧,这并不难:Excel 获取可见的行和列编号,excel,vba,Excel,Vba,我的Excel工作表中有一个简单的宏,可以进行一些简单的计算。 为了获得更好的用户体验,我希望宏运行,并在运行完成后返回到用户激活宏之前所在的单元格,这样用户就不会在屏幕上看到任何更改 好吧,这并不难: Dim activeRow As Integer Dim activeCol As Integer Sub myCode activeRow = ActiveCell.Row activeCol = ActiveCell.Column ' code...
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个。很高兴看到您在船上远离。选择。很高兴能帮助您转换任何您觉得困难的部分。您介意检查一下这个吗?