2010-07-07 20 views
2

这可能很简单,但我已经Google搜索并找不到答案。我也只是学习VBA(我已经完成了VB.NET等)在VBA Excel中,当我将一个单元格复制到另一个单元格时,如果它是不复制的日期,我该怎么办?

如果宏试图复制的单元格是一个日期,我只是得到一个复制的数字,例如, 40352从23/06/2010

下面的代码片段,最欣赏的任何帮助,感谢:

Sheet5.Range(Cells(rwStartNumber, currentColumn + 1).Address(False, False)) = 
    Sheet5.Range(Cells(rwStartNumber, currentColumn).Address(False, False)) 

显然,这是两个回路,但是这并不是问题的所在。

谢谢!

回答

2

你可以尝试以下

With Selection 
    .PasteSpecial xlPasteValuesAndNumberFormats 
End With 

让我知道它是否适合你,

亲切的问候,

1

你看到的数字,因为这是how Excel stores dates:你需要change the format of your target cell to be Date,它会正常显示。

+0

我有料到它是类似的东西。有没有办法将格式与单元格数据一起复制?我有一个搜索和范围()。选择,然后Selection.Copy,Selection.Paste方法带来了应用程序错误或somesuch(我甚至不知道是否会复制格式无论如何) – 2010-07-07 12:13:33

+0

@Thomas King Take使用xlPasteFormats查看PasteSpecial方法http://msdn.microsoft.com/zh-cn/library/aa195818%28office.11​​%29.aspx – 2010-07-07 12:42:21

0

可以从源小区物业NumberFormat的复制,如:

'Following line copies the values...' 
ws.Cells(curRow, curCol + 1) = ws.Cells(curRow, curCol) 

'And this copies the formats...' 
ws.Cells(curRow, curCol + 1).NumberFormat = ws.Cells(curRow, curCol).NumberFormat 

(ws是工作表类型的变量,可以像这样分配它:

Dim ws as Worksheet 
Set ws = Worksheets("Sheet5") 

,或者你也可以只使用ActiveSheet)

相关问题