大家好,感谢帮助我的人。
我对一个我无法解决的问题感到疯狂。
让我解释一下,我创建了一个宏来分析数据库,在分析中,它将月份和年份的日期拆分为两个不同的单元格。日期栏下方:
我写的代码是:
sh1.Range("AB1") = "MM"
sh1.Range("AC1") = "YYYY"
sh1.Range("AD1") = "MM_mod"
sh1.Range("AE1") = "YYYY_mod"
Dim i As Integer
Dim num As Integer
Dim startRow As Long, lastRow As Long
startRow = Range("H1").Row
lastRow = sh1.Cells(sh1.Rows.Count, "H").End(xlUp).Row
num = lastRow - startRow + 1
For i = 2 To num
Range("AB" & i) = Month(DateValue(Range("i" & i)))
Next i
For i = 2 To num
Range("AC" & i) = Year(DateValue(Range("i" & i)))
Next i
For i = 2 To num
Range("AD" & i) = Month(DateValue(Range("j" & i)))
Next i
For i = 2 To num
Range("AE" & i) = Year(DateValue(Range("j" & i)))
Next i
在我的电脑和我的一些同事的电脑上,它运行良好,没有问题。 但在其他同事的计算机上,它不起作用,在他们的情况下,如果天数是 12 或更小,宏将采用天而不是月。
我认为问题可能出在格式上,我按如下方式更改了代码(添加了 .NumberFormat):
sh1.Range("AB1") = "MM"
sh1.Range("AC1") = "YYYY"
sh1.Range("AD1") = "MM_mod"
sh1.Range("AE1") = "YYYY_mod"
Dim i As Integer
Dim num As Integer
Dim startRow As Long, lastRow As Long
startRow = Range("H1").Row
lastRow = sh1.Cells(sh1.Rows.Count, "H").End(xlUp).Row
num = lastRow - startRow + 1
For i = 2 To num
Range("I" & i).NumberFormat = "d-m-yyyy h:mm"
Next i
For i = 2 To num
Range("J" & i).NumberFormat = "d-m-yyyy h:mm"
Next i
For i = 2 To num
Range("AB" & i) = Month(DateValue(Range("i" & i)))
Next i
For i = 2 To num
Range("AC" & i) = Year(DateValue(Range("i" & i)))
Next i
For i = 2 To num
Range("AD" & i) = Month(DateValue(Range("j" & i)))
Next i
For i = 2 To num
Range("AE" & i) = Year(DateValue(Range("j" & i)))
Next i
不幸的是,它没有解决问题。
您能提出任何解决方案吗?
谢谢
支持使用 VBA 代码解决问题
尝试
For i = 2 To num
Range("AB" & i) = Month(Range("i" & i).Value2)
Next i
For i = 2 To num
Range("AC" & i) = Year(Range("i" & i).Value2)
Next i
For i = 2 To num
Range("AD" & i) = Month(Range("j" & i).Value2)
Next i
For i = 2 To num
Range("AE" & i) = Year(Range("j" & i).Value2)
Next i
这应该有助于应对不同的设置