1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 自定义 Excel 自动填充快捷键

自定义 Excel 自动填充快捷键

时间:2020-12-27 20:09:58

相关推荐

自定义 Excel 自动填充快捷键

Technorati Tags: Excel,Marco,Auto Fill,Shortcut Key,Excel宏,自动填充,快捷键

Microsoft Excel 提供了丰富的快捷键,使得操作电子表格十分方便,尤其是在操作很大,很长的表时。

Excel的自动填充功能,使得复制单元格内容、公式和填充序列的操作变得简单。但是,Excel只提供了通过拖动填充柄来实现填充,并没有为自动填充提供快捷键。在操作十分频繁的时候,右手必须在键盘和鼠标之间来回移动,容易疲劳。系统不提供,作为程序员,可以自己编写一个VBA宏执行自动填充,并为该宏指定快捷键,从而实现通过快捷键执行自动填充操作。

1: 新建一个Excel工作簿;在VBA编辑器中添加一个模块,编写宏代码。

源码:

' Author: Ken Yang' /kenyang' 使用和分发,请保留完整作者信息。Sub AutoFill()Dim SourceArea As Range, TargetArea As RangeSet SourceArea = Selection.Areas.Item(1)Dim SourceBottomLeftCell As Range, SourceBottomRightCell As RangeSet SourceBottomLeftCell = SourceArea.Cells(SourceArea.Rows.Count, 1)Set SourceBottomRightCell = SourceArea.Cells(SourceArea.Rows.Count, SourceArea.Columns.Count)Dim TargetLastRow As Long, TargetLastCell As RangeIf SourceBottomLeftCell.Offset(1, 0).Value = vbEmpty ThenIf SourceBottomLeftCell.End(xlDown).Value = vbEmpty ThenIf SourceBottomLeftCell.Column = 1 ThenIf SourceBottomRightCell.Offset(1, 1).Value <> vbEmpty ThenSet TargetLastCell = SourceBottomRightCell.Offset(0, 1).End(xlDown).Offset(0, -1)End IfElseIf SourceBottomLeftCell.Offset(1, -1).Value <> vbEmpty ThenSet TargetLastCell = SourceBottomLeftCell.Offset(0, -1).End(xlDown).Offset(0, SourceArea.Columns.Count)End IfEnd IfElseSet TargetLastCell = ActiveSheet.Cells(SourceBottomLeftCell.End(xlDown).Offset(-1, 0).Row, SourceBottomRightCell.Column)End IfElse 'If SourceBottomLeftCell.Offset(1, 0).Value <> vbEmpty ThenDim LastCell As RangeSet LastCell = SourceBottomLeftCell.End(xlDown)Dim i As Long, LastRow As LongLastRow = SourceBottomLeftCell.End(xlDown).RowFor i = 2 To SourceArea.Columns.CountIf SourceArea.Cells(SourceArea.Rows.Count, i).Offset(1, 0).Value = vbEmpty ThenLastRow = SourceBottomLeftCell.RowExit ForElseDim CurrentLastCell As RangeSet CurrentLastCell = SourceArea.Cells(SourceArea.Rows.Count, i).End(xlDown)If CurrentLastCell.Row < LastCell.Row ThenLastRow = CurrentLastCell.RowEnd IfEnd IfNext iSet TargetLastCell = ActiveSheet.Cells(LastRow, SourceBottomRightCell.Column)End IfIf Not TargetLastCell Is Nothing ThenDim TargetAreaName As StringTargetAreaName = SourceArea.Cells(1, 1).Address(0, 0) & ":" & TargetLastCell.Address(0, 0)Set TargetArea = Range(TargetAreaName)On Error GoTo ErrHandlerSourceArea.AutoFill Destination:=TargetAreaTargetArea.SelectEnd IfErrHandler:End Sub

2: 为宏指定快捷键 Ctrl + E。 使用Ctrl + E 作为快捷键的原因是 Ctrl + E 没有被Excel内置功能占用,并且Ctrl 键和 E 键都在键盘的左边区域,左手单手就可以操作。

3: 将工作簿另存为 Excel 加载宏。

4: 将Excel加载宏 复制到 %programfiles%\Microsoft Office\Office12\XLSTART 目录(Excel 目录:%programfiles%\Microsoft Office\Office11\XLSTART),以便Excel启动时,自动加载宏代码。

也可从这里下载宏文件,解压后直接放置到%programfiles%\Microsoft Office\Office12\XLSTART 目录,即可使用。下载的宏文件只支持Excel 。如果是Excel , 请按照前面的步骤操作。

这样,可以在Excel 中按下 Ctrl + E 实现向下自动填充了。

缺陷:

VBA宏代码执行的操作,不支持撤销(undo)。

报告bug,请留评论。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。