使用 Excel VBA 实现复制 粘贴 和保存,并自动运行VBA

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Excel VBA 实现复制 粘贴 和保存,并自动运行VBA相关的知识,希望对你有一定的参考价值。

请高手帮忙编写一段VBA代码
可以执行以下命令:
在Sheet1里只要按回车键就自动执行复制Sheet1的第4行到500行的所有内容,粘贴到Sheet 2的第4行到500行,并保存。

代码如下,注意代码的位置(详见截图)

Private Sub Worksheet_Activate()
   Application.OnKey "~", "Copy4To500"
   'Application.OnKey "ENTER", "Copy4To500" '小键盘回车键
End Sub
Private Sub Worksheet_Deactivate()
   Application.OnKey "~"
   'Application.OnKey "ENTER"
End Sub
Sub Copy4To500()
   Rows("4:500").Copy Sheet2.Range("A4")
   ThisWorkbook.Save
End Sub

参考技术A 这个超级简单。录制一个宏
按照你需要的操作一步一步的来。然后保存,最后再指定一个快捷键
搞点。
参考技术B

可使用VBA事件。    

A. 将如下代码复制粘贴在sheet1代码中。    

B.回车运行即可。    

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.DisplayAlerts = False

On Error Resume Next

Worksheets(1).Rows("4:500").Copy Worksheets(2).Range("4:500")

ActiveWorkbook.Save

Application.DisplayAlerts = True

End Sub

参考技术C 代码复制到sheet1
Sub 复制()
Rows("4:500").Copy Sheets(2).[A4]
Sheets(2).Select
MsgBox "复制完成....."
End Sub
自己指定一个 快捷键即可
参考技术D 用回车键激活,这个有点夸张了。。可以试试用其它键录制宏。回车键即使实现了也会出现很多不比较的麻烦

vbscript 在Excel VBA中复制和粘贴的三种方法。请注意,`Range.Copy`和`Range.PasteSpecial`使用剪贴板,因此请避免复制任何内容

'Be aware that `Range.Copy` and `Range.PasteSpecial` use the clipboard.

'copy everything (values, formats, comments, et al.)
Private Sub CopyPasteAll(fromRange As Range, toRange As Range)
    
    fromRange.Copy toRange
    
End Sub

'copy values only (without using the clipboard)
Private Sub CopyPasteValues(fromRange As Range, toRange As Range)
    
    Dim rows As Integer, columns As Integer, toCell As Range
    
    rows = fromRange.rows.Count
    columns = fromRange.columns.Count
    
    Set toCell = toRange.Cells(1, 1)
    Set toRange = toCell.Worksheet.Range(toCell, toCell.Offset(rows - 1, columns - 1))
    
    toRange.Value = fromRange.Value
    
End Sub

'use Paste Special to be more specific
Private Sub CopyPasteSpecial(fromRange As Range, toRange As Range, _
 Optional pasteType As XlPasteType = xlPasteAll, _
 Optional pasteOperation As XlPasteSpecialOperation = xlPasteSpecialOperationNone, _
 Optional skipBlanks As Boolean = False, _
 Optional transpose As Boolean = False)
    
    fromRange.Copy
    Call toRange.PasteSpecial(pasteType, pasteOperation, skipBlanks, transpose)
    
End Sub

以上是关于使用 Excel VBA 实现复制 粘贴 和保存,并自动运行VBA的主要内容,如果未能解决你的问题,请参考以下文章

Excel / VBA:粘贴数据后自动调整列宽

excel vba 选择性粘贴并设置为真文本?

无法使用 vba 保存 excel 文件:

Excel VBA在循环内复制和粘贴循环

excel vba复制数据范围,打开新的xlsx文件重命名表并保存

vbscript 在Excel VBA中复制和粘贴的三种方法。请注意,`Range.Copy`和`Range.PasteSpecial`使用剪贴板,因此请避免复制任何内容