前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel实战技巧61: 处理剪切、复制和粘贴操作,使它们不会破坏已设置的单元格格式

Excel实战技巧61: 处理剪切、复制和粘贴操作,使它们不会破坏已设置的单元格格式

作者头像
fanjy
发布2019-11-13 12:56:16
1.9K0
发布2019-11-13 12:56:16
举报
文章被收录于专栏:完美Excel完美Excel

这是《Professional Excel Development》中介绍的一个技巧,特整理分享于此。

基于表格的用户接口的最大问题是:由于采用Excel黙认方式来处理数据的剪切、复制、粘贴以及拖放,而数据输入表中大多数用于编辑的单元格都被指定了特定样式、数据验证或条件格式,因此Excel默认的复制/粘贴会覆盖掉被粘贴单元格中的各种格式,同时Excel默认的剪切方式会将被剪切单元格的格式设置为“通用样式”。Excel的拖放功能也与剪切/复制类似,同样会破坏单元格中的格式。

为避免发生上述情况,可以屏蔽Excel的拖放功能,并编写自已的剪切、复制和粘贴程序。

代码语言:javascript
复制
Dim mbCut As Boolean
Dim mrngSource As Range
 
'初始化单元格的复制-粘贴
Public Sub InitCutCopyPaste()
   Application.OnKey "^X", "DoCut"
   Application.OnKey "^x", "DoCut"
   Application.OnKey "+{DEL}", "DoCut"
   
   Application.OnKey "^C", "DoCopy"
   Application.OnKey "^c", "DoCopy"
   Application.OnKey "^{INSERT}", "DoCopy"
   
   Application.OnKey "^V", "DoPaste"
   Application.OnKey "^v", "DoPaste"
   Application.OnKey "+{INSERT}", "DoPaste"
   
   Application.OnKey "{ENTER}", "DoPaste"
    Application.OnKey "~","DoPaste"
   
    '关闭拖放操作
   Application.CellDragAndDrop = False
End Sub
 
'处理剪切单元格
Public Sub DoCut()
   If TypeOf Selection Is Range Then
       mbCut = True
       Set mrngSource = Selection
       Selection.Copy
   Else
       Set mrngSource = Nothing
       Selection.Cut
   End If
End Sub
 
'处理复制单元格
Public Sub DoCopy()
   If TypeOf Selection Is Range Then
       mbCut = False
       Set mrngSource = Selection
   Else
       Set mrngSource = Nothing
   End If
   
   Selection.Copy
End Sub
 
'处理粘贴单元格
Public Sub DoPaste()
   If Application.CutCopyMode And Not mrngSource Is Nothing Then
       Selection.PasteSpecial xlValues
       If mbCut Then
            mrngSource.ClearContents
       End If
       
       Application.CutCopyMode = False
   Else
       ActiveSheet.Paste
   End If
End Sub

将上述代码复制到VBE中,试着运行并熟悉其原理。可以将上述程序嵌入到你正在开发的应用程序的合适位置,结合实际稍作调整,使应用程序更健壮。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档