就像标题所说的那样,有些单元格最终得到了正确的值,有些则切换了月份和日期,如果这是一个常数,我可以修复它,但它只是弄乱了一些值,我不明白为什么。
这是代码:
For v2temp = 0 To 4
form1(v2temp) = Trim(form1(v2temp)) & ";"
tmpp = Left(form1(v2temp), Len(form1(v2temp)) - 1)
arr = Split(tmpp, "-")
ActiveWorkbook.Worksheets("TEMP2").Range("I2").NumberFormat = "dd-mm-yyyy"
If tmpp <> vbNullString Then
dt = DateSerial(arr(2), arr(1), arr(0))
ActiveWorkbook.Worksheets("TEMP2").Range("I2").Value = dt
form1(v2temp) = ActiveWorkbook.Worksheets("TEMP2").Range("I2").Value
Else
form1(v2temp) = ""
End If
Next
For v2temp = 0 To 4
ActiveWorkbook.Worksheets("TEMP2").Range("C7").Offset(v2temp, 0).Value = form1(v2temp)
Next
因此,这应该将一些日期写入单元格 C7 C8 C9 C10 和 C11,它确实如此,但问题已经描述。
我在代码中添加了一些 debug.print 来逐步编写接收到的值和转换后的值,您会看到两者都是正确的,但是最终在单元格上的值是错误的。
这是调试打印:
---------MARK--------
var TMPP is 10-08-2013
var DT is 10-08-2013
---------MARK--------
var TMPP is 03-08-2013
var DT is 03-08-2013
---------MARK--------
var TMPP is 28-07-2013
var DT is 28-07-2013
---------MARK--------
var TMPP is 14-07-2013
var DT is 14-07-2013
---------MARK--------
var TMPP is 26-06-2013
var DT is 26-06-2013
---------MARK--------
您可以看到它正确传递了 5 次,并且所有 5 个进出日期都可以,但这就是单元格上的结果,值应该从最早到最旧排序:
28-07-2013
26-06-2013
14-07-2013 > this should be before the cell up from this, so it's wrong formated
08-10-13 > this should be 10-08-2013
08-03-13 > this should be 03-08-2013
谁能帮帮我吗?我已经尝试搜索和搜索,但找不到任何解决方案。
谢谢
> 编辑1
我已经添加:
For v2temp = 0 To 99
ActiveWorkbook.Worksheets("TEMP2").Range("C2").Offset(v2temp, 0).NumberFormat = "dd-MM-yyyy"
Next
ActiveWorkbook.Worksheets("TEMP2").Range("I2").NumberFormat = "dd-MM-yyyy"
现在的结果是: 28-07-2013 26-06-2013 14-07-2013 08-10-2013 08-03-2013
它们仍然会以字符串的形式出现,因为排序选项甚至不显示日期的排序,而是显示字符串的排序。
我稍后用这段代码对它们进行排序:
ActiveWorkbook.Worksheets("TEMP2").Visible = True
Sheets("TEMP2").Select
Range("B1:D1").Select
Sheets("TEMP2").AutoFilterMode = False
Selection.AutoFilter
ActiveWorkbook.Worksheets("TEMP2").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("TEMP2").AutoFilter.Sort.SortFields.Add Key:=Range("C1:C11"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("TEMP2").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With