复制单元格时,MS Excel会添加换行符

Sru*_*lla 18 excel copy-paste

复制单元格(不从单元格中选择文本)并粘贴到任何编辑器时,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)

  • 我在参考列表中找不到"Microsoft Forms 2.0 Object Library".所以我用Google搜索并发现system32文件夹中"FM20.dll"的"浏览..."就可以了. (3认同)
  • 我在参考列表中找不到"Microsoft Forms 2.0 Object Library".如果您插入UserForm,则会为您添加引用. (2认同)

Rob*_*phy 12

我在翻译公司的Excel电子表格和我们的代码之间复制/粘贴了我们应用程序的大型翻译文件.每次都要删除换行符让我不得不把它推到墙上.

最后,我复制了整张表并将其粘贴到新的Google文档电子表格中.然后我使用它来满足我的复制需求,因为它不会在Excel上复制新行.

希望有所帮助!