Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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_Ms Access_Freeze - Fatal编程技术网

Excel 如何用一行代码冻结第一行

Excel 如何用一行代码冻结第一行,excel,vba,ms-access,freeze,Excel,Vba,Ms Access,Freeze,我使用Access数据库创建Excel文件,并在其中格式化Excel文件。我想用更简单的代码冻结excel文件中的第一行 这很有效: wksExcel.Range("A2").Select wbkExcel.Application.ActiveWindow.FreezePanes = True 但是,是否可以只使用一行这样的代码: wksExcel.Range("A2").Application.ActiveWindow.FreezePanes = True With ActiveWindo

我使用Access数据库创建Excel文件,并在其中格式化Excel文件。我想用更简单的代码冻结excel文件中的第一行

这很有效:

wksExcel.Range("A2").Select
wbkExcel.Application.ActiveWindow.FreezePanes = True
但是,是否可以只使用一行这样的代码:

wksExcel.Range("A2").Application.ActiveWindow.FreezePanes = True
With ActiveWindow
    .SplitColumn = 0
    .SplitRow = 1
    .FreezePanes = True
End With

此通用函数将冻结Excel中的工作表窗格,而无需选择

你可以把它缩减到你的特定目的

'从左上角到左上角冻结工作表窗格 '行索引和列索引单元格的角。 ' '如果RowIndex或ColumnIndex小于2或省略, '仅分别冻结列或行。 '如果RowIndex和ColumnIndex小于2或省略, '工作表的冻结已终止。 ' ' 2017-09-21. 古斯塔夫·布罗克,仙人掌数据ApS,CPH。 ' 公共分包商工作表_ ByVal索引作为变量_ 可选的ByVal行索引,长度为1_ 可选ByVal ColumnIndex,长度为1 常量NoSplitIndex的长度=0 模糊冻结为布尔值 暗淡的卡林德克斯一样长 将屏幕更新为布尔值 '可能会切换活动窗口,因此 '设置冻结时禁用屏幕更新。 ScreenUpdate=Application.screenUpdate Application.ScreenUpdating=False 多芬特 '记录当前活动工作表的索引。 CallIndex=ThisWorkbook.ActiveSheet.Index '激活要冻结的工作表。 ThisWorkbook.WorksheetIndex.Activate '隐藏行数和列数。 ActiveWindow.DisplayHeaders=False '隐藏公式栏。 Application.DisplayFormulaBar=False '确定是冻结还是终止冻结。 冻结=行索引>1或列索引>1 如果冻结,那么 '删除已设置的拆分。 如果ActiveWindow.Split=True,则 ActiveWindow.Split=False 如果结束 “避免错误。 如果行索引<1,则 行索引=1 如果结束 如果列索引<1,则 ColumnIndex=1 如果结束 '设置坐标并应用冻结。 ActiveWindow.SplitRow=行索引-1 ActiveWindow.SplitColumn=ColumnIndex-1 ActiveWindow.FreezePanes=True 其他的 '终止拆分并冻结。 ActiveWindow.SplitRow=NoSplitIndex ActiveWindow.SplitColumn=NoSplitIndex ActiveWindow.Split=False 如果结束 '返回到以前活动的工作表。 多芬特 ThisWorkbook.WorksheetCallIndex.Activate '还原屏幕更新的状态。 Application.ScreenUpdate=屏幕更新 端接头
由于Range对象不能以这种方式与ActiveWindow对象组合,因此您不能仅使用一个命令来执行此操作。如果您正在查找在不选择单元格的情况下拆分工作表的代码,则可以使用以下方法:

wksExcel.Range("A2").Application.ActiveWindow.FreezePanes = True
With ActiveWindow
    .SplitColumn = 0
    .SplitRow = 1
    .FreezePanes = True
End With

你的观点只是为了避免选择吗?谢谢,我不知道Range对象不能以这种方式与ActiveWindow对象组合。哇,它可以工作,但它的代码要比我预期的多得多-符合事实的但这就是quick-n-dirty和生产代码之间的区别。如果它符合你的目的,那么请标记为已回答。