2014-12-03 57 views
0

我正在寻找类似于将值从ASAP实用程序复制到空单元格的东西,但是向右复制。所以,当我选择一行时,它会将填充单元格中的值复制到右侧的空单元格中,直到存在填充的单元格,然后它将开始复制该单元格,依此类推。将值复制到右侧的空单元格

这里除了当我选择一整行的作品的代码示例:

Sub CopyToRight() 

On Error GoTo Err_Handler 

Selection.SpecialCells(xlCellTypeBlanks).Select 
Selection.FormulaR1C1 = "=RC[-1]" 

Exit_This_Sub: 
Exit Sub 
Err_Handler: 
Resume Exit_This_Sub 

End Sub 

Example file

+0

你试过到目前为止什么码? – Chrismas007 2014-12-03 17:06:16

+0

http://msdn.microsoft.com/en-us/library/office/aa195728%28v=office.11​​%29.aspx'Range.FillRight'将是你最好的选择。 – Chrismas007 2014-12-03 17:07:37

+0

你是否需要循环遍历所有行?请张贴您的工作表的一个例子。 – Chrismas007 2014-12-03 17:09:42

回答

-1

您是否尝试过这样的事情?没有任何代码示例,很难看到你想要做什么。

Sub CopyRow() 
    Rows("32:32").Select 
    Selection.Copy 
    Rows("33:33").Select 
    Selection.Insert Shift:=xlDown 
End Sub 
+0

这绝不能解决O.P.的问题。 – Chrismas007 2014-12-03 17:08:57

+0

不是我在找什么。我粘贴了代码,所以你可以尝试选择连续的一些单元格。我希望这个工作选择整个行。 – Mikelowski 2014-12-03 17:09:31

0

这会做你想要什么:

Sub CopyToRight() 

Dim CurCol As Long, CurRow As Long, LastCol As Long 
Dim CopyRng As Range 

CurRow = ActiveCell.Row 

LastCol = Cells(CurRow, Columns.Count).End(xlToLeft).Column 

For CurCol = 1 To LastCol 
    If Not Cells(CurRow, CurCol).Value = "" Then 
     Set CopyRng = Cells(CurRow, CurCol) 
    ElseIf CopyRng is Nothing Then 
     MsgBox "Error First Cell is Blank" 
    Else 
     Cells(CurRow, CurCol).Text = CopyRng.Text 
    End If 
Next CurCol 

End Sub 
+0

谢谢,但它显示行如果单元格(CurRow,CurCol).Value =“”然后的类型不匹配错误。一定是因为我在选择文字。 – Mikelowski 2014-12-03 17:28:23

+0

我测试了这个工作在一个简单的A-blank-blank-blank-B-blank-blank-C-blank-D行上,它复制得很好。 – Chrismas007 2014-12-03 17:34:12

+0

请分享您的某个行的一些示例数据,以便我可以测试并尝试复制该错误。 – Chrismas007 2014-12-03 17:35:40

相关问题