复制单元格(不从单元格中选择文本)并粘贴到任何编辑器时,MS Excel 2010或2007或任何版本的内容都会添加换行符并将光标发送到下一行.令人讨厌的是将光标向上移动到最后一行.
将光标恢复到最后一行看起来并不多,但如果你作为一名程序员不得不继续这么做,那我觉得非常糟糕.如果excel中有设置可以阻止此任何建议吗?
我试过看在线没找到任何东西,也查找了excel的选项,没有找到任何东西.
Pet*_*ert 13
您可以创建自己的复制例程,该例程不存储整个单元格,而只存储剪贴板中的值:
Sub OwnCopy()
Dim DataObj As New MSForms.DataObject
DataObj.SetText ActiveCell.Value 'depending what you want, you could also use .Formula here
DataObj.PutInClipboard
End Sub
Run Code Online (Sandbox Code Playgroud)
为了能够编译宏,您需要包含"Microsoft Forms 2.0 Object Library"作为参考(在Visual Basic编辑器中,转到Tools-> References).
现在,您可以指定这个宏另一个快捷方式(如Ctrl- - Shift)C使用默认运行宏对话框-甚至覆盖Ctrl- c通过执行Application.OnKey "^c", "OwnCopy".但是,我不建议覆盖Ctrl- c因为你很可能想要使用通常与其一起复制的所有其他信息,而不是粘贴到编辑器.
要使其永久化,只需将宏存储在您的个人工作簿中.
如果您想要一个更复杂的复制例程,也可以处理多个单元格/选择区域,请使用以下代码:
Sub OwnCopy2()
Dim DataObj As New MSForms.DataObject
Dim lngRow As Long
Dim intCol As Integer
Dim c As Range
Dim strClip As String
Const cStrNextCol As String = vbTab
Const cStrNextRow As String = vbCrLf
With Selection
If Not TypeOf Selection Is Range Then
On Error Resume Next
.Copy
Exit Sub
End If
If .Areas.Count = 1 Then
For lngRow = 1 To .Rows.Count
For intCol = 1 To .Columns.Count
strClip = strClip & _
Selection(lngRow, intCol).Value & cStrNextCol
Next intCol
strClip = Left(strClip, Len(strClip) - Len(cStrNextCol)) _
& cStrNextRow
Next lngRow
Else
For Each c In .Cells
strClip = strClip & c.Value & vbCrLf
Next c
End If
strClip = Left(strClip, Len(strClip) - Len(cStrNextRow))
DataObj.SetText strClip
DataObj.PutInClipboard
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
Rob*_*phy 12
我在翻译公司的Excel电子表格和我们的代码之间复制/粘贴了我们应用程序的大型翻译文件.每次都要删除换行符让我不得不把它推到墙上.
最后,我复制了整张表并将其粘贴到新的Google文档电子表格中.然后我使用它来满足我的复制需求,因为它不会在Excel上复制新行.
希望有所帮助!
| 归档时间: |
|
| 查看次数: |
19032 次 |
| 最近记录: |