VBA如何将整数传递到范围值
我试图从以下几点来简化这个函数VBA如何将整数传递到范围值,vba,excel,Vba,Excel,我试图从以下几点来简化这个函数 Public Sub freezeRow(sheetAct, sheetType As String, sheetRow As Integer) sheetAct.Activate 'Activate sheet ActiveWindow.FreezePanes = False 'Unfreeze all rows Select Case sheetType Case "Sum" 'Freeze the Summary sprea
Public Sub freezeRow(sheetAct, sheetType As String, sheetRow As Integer)
sheetAct.Activate 'Activate sheet
ActiveWindow.FreezePanes = False 'Unfreeze all rows
Select Case sheetType
Case "Sum"
'Freeze the Summary spread sheet after row 9
sheetAct.Range("10:10").Select
Case "Data"
'Freeze the Summary spread sheet after row 2
sheetAct.Range("3:3").Select
End Select
ActiveWindow.FreezePanes = True 'Freeze selected rows
End Sub
到类似这样的地方
Public Sub freezeRow(sheetAct, sheetType As String, sheetRow As Integer)
sheetAct.Activate 'Activate sheet
ActiveWindow.FreezePanes = False 'Unfreeze all rows
sheetAct.Range("sheetRow:sheetRow").Select
ActiveWindow.FreezePanes = True 'Freeze selected rows
End Sub
我似乎无法删除范围中的引号,当我运行它时会抛出一些模糊的错误,我喜欢一直使用单元格()
,因为它更明确(对我来说)
sheetAct.Range(“sheetRow:sheetRow”)。选择
与
或者,只需使用sheetAct.Range(sheetRow&“:”&sheetRow)。选择
但是为什么要使用。选择?你可以选择最佳实践。(当然,如果你用它来再次检查你是否有正确的范围,那没关系。当你处理数据时,你要小心)。我发现这种方法非常有效
Public Sub freezeRow(sheetAct, sheetRow As String)
Dim rangeVal As String
rangeVal = sheetRow & ":" & sheetRow
sheetAct.Activate 'Activate sheet
ActiveWindow.FreezePanes = False 'Unfreeze all rows
sheetAct.Range(rangeVal).Select 'Select appropriate row
ActiveWindow.FreezePanes = True 'Freeze selected rows
端接头
这仅用于冻结标题,在滚动数据时可见作为快速解决方案,我建议如下:
Public Sub freezeRow(sheetAct As Worksheet, sheetRow As String)
Application.Goto sheetAct.Rows(sheetRow)
ActiveWindow.FreezePanes = False
ActiveWindow.FreezePanes = True
End Sub
您可以在ActiveWindow.FreezePanes=False
和ActiveWindow.FreezePanes=True
之间添加行ActiveWindow.Split=False
,因为如果FreezePanes
是在Split
之后完成的,然后ActiveWindow.FreezePanes=False
将窗口更改回原来的Split
-状态。在这种情况下,ActiveWindow.FreezePanes=True
将忽略所选范围,并将其冻结在Split
所在的位置
我还建议使用sheetAct.Rows(sheetRow+1)
,因为窗格将冻结在sheetRow
上。但这只是为了更好的逻辑->
如果有3
将冻结3行,而不是2行。“sheetRow:sheetRow”
应该是sheetRow&“:”&sheetRow”
可能是sheetAct.Cells(sheetRow,1).EntireRow.选择
。另外-sheetRow作为整数
-整数将在第28000行或其他行后出错…使用sheetRow作为长
谢谢,我确信我会犯更多新手错误…VBA新手。单元格给出了一个不合格的引用错误sheetAct.Range(.Cells(sheetRow,1),.Cells(sheetRow,1)).EntireRow。Select@RickFlyFish-如何将sheetAct
发送到sub?我假设它是工作表
。还要注意。范围
不是以sheetAct开头。
使用与
,只需将
用作“占位符”。
Public Sub freezeRow(sheetAct As Worksheet, sheetRow As String)
Application.Goto sheetAct.Rows(sheetRow)
ActiveWindow.FreezePanes = False
ActiveWindow.FreezePanes = True
End Sub