我很确定在某个地方,某人已经设法解释了这个问题,但我无法找到合适的答案。
情况如下: 在程序中,我将列表复制到窗口的剪贴板,其值为
某事日期时间某事......
Bla 31/03/16 02:20:22 Bla Bla
Bla 01/04/16 03:10:10 Bla Bla
然后VBA代码找到最后一个空闲行并执行
.PasteSpecial xlPasteAll
Excel中的结果
Bla 31/03/2016 20:22,0 Bla Bla
Bla 04.01.2016 10:10,0 Bla Bla
这不应该是它应该是什么。
我尝试使用相同结果的.PasteSpecial Format:="Unicode-Text"
我无法获得Paste:=xlValues
等工作。 (1004)
最好的部分是,如果我右键单击(或ctrl + v)表单并经过它,一切都神奇地以正确的方式出现。
Bla 31.03.2016 02:20:22 Bla Bla
Bla 01.04.2016 03:10:10 Bla Bla
所以我假设我做的事非常愚蠢,我只需要找到vba表达式就可以了。
有人可以帮帮我吗。
答案 0 :(得分:0)
由于对这个特定问题似乎不是一个简单的答案,我自己写了一个解决方法。
只有从Windows剪贴板粘贴并且您有许多不同的数据时,才需要此解决方法。 Excel to excel有不同的可能性。
Dim iDay As Integer
Dim iMonth As Integer
Dim iYear As Integer
Dim currRow As Integer
Dim iName As String
'Change date to correct date because of xl bug
currRow = 3
iName = ThisWorkbook.Sheets("YourSheet").Cells(currRow, 4)
Do While iName <> ""
If InStr(1, ThisWorkbook.Sheets("YourSheet").Cells(currRow, 2), "/", vbTextCompare) <> 0 Then
ThisWorkbook.Sheets("YourSheet").Cells(currRow, 2).Replace "/", "."
Else
iDay = Split(ThisWorkbook.Sheets("YourSheet").Cells(currRow, 2), ".")(1)
iMonth = Split(ThisWorkbook.Sheets("YourSheet").Cells(currRow, 2), ".")(0)
iYear = Split(ThisWorkbook.Sheets("YourSheet").Cells(currRow, 2), ".")(2)
ThisWorkbook.Sheets("YourSheet").Cells(currRow, 2) = DateSerial(iYear, iMonth, iDay)
End If
currRow = currRow + 1
iName = ThisWorkbook.Sheets("YourSheet").Cells(currRow, 4)
Loop