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

当你复制一个单元格(不从单元格中select文本)并粘贴到任何编辑器的MS Excel 2010或2007或任何版本时,都会添加一个换行符并将光标发送到下一行。 它讨厌把光标向上移动到最后一行。

将光标移动到最后一行看起来并不需要太多的工作,但是如果作为一个程序员,我不得不继续这么做,那么我感觉真的很糟糕。 任何build议,如果在Excel中有一个设置来阻止这个?

我试图在网上找没有发现任何东西,也查找了Excel的选项,没有find任何东西。

你可以创build你自己的复制例程,它不存储整个单元格,但只有它的值在剪贴板中:

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 

为了能够编译macros,需要包含“Microsoft Forms 2.0对象库”作为参考(在Visual Basic编辑器中,转到“工具” – >“引用”)。

您现在可以使用默认运行macros对话框将该macros指定给另一个快捷方式(例如CtrlShiftC ),或者通过执行Application.OnKey "^c", "OwnCopy"覆盖Ctrlc 。 不过,我不build议覆盖Ctrlc,因为除了粘贴到编辑器之外,您很可能会想要使用通常在其他情况下复制的所有其他信息。

为了使这个永久的,只要将macros存储在您的个人工作簿。

如果你想要一个更复杂的复制例程,也可以处理多个单元格/select区域,请使用以下代码:

 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 

我在翻译公司的Excel电子表格和我们的代码之间复制/粘贴了我们应用程序的大量翻译文件。 每次删除换行符都会把我拉上墙。

最后,我复制了整个工作表,并将其粘贴到新的Google Docs电子表格中。 然后,我用它来满足我的复制需求,因为它不会在Excel所拷贝的副本上添加换行符。

希望有所帮助!

我同意这很烦人,但不知道有什么要做。

Excel会自动格式化单元格…制表符分隔的列,行分隔的行(单个单元格是1列的行)。

要validation:在.NET中,Clipboard.GetText()显示格式已经在剪贴板中

这里有一些IronPython来说明:

 # Copy some cells in Excel, then run the following import sys, clr clr.AddReference("System.Windows.Forms") from System.Windows.Forms import Clipboard Clipboard.GetText()