我想创建一个宏,它使用stackoverflow中的用户帮助我学习的函数(ConvertDates
)。
这是迄今为止的代码:
Sub CopyTempToFinal()
Worksheets("g_temp").Range("A:CU").Copy
With Worksheets("g_final")
.Range("A:CU").PasteSpecial 12
End With
End Sub
Sub CovertCellsToDate()
ActiveSheet.Name = "g_final"
Dim LastRowRec As Long
LastRowRec = ThisWorkbook.Sheets("g_final").Range("A65536").End(xlUp).Row
For Each c In ActiveSheet.Range(Cells(1, 1), Cells(LastRowRec, 98)).Cells
If InStr(c, "/") > 0 Then c = CovertDates(c)
Next
End Sub
从temp复制到final后,我想搜索列范围A:CU中的单元格,直到最后填充的行,然后将ConvertDates
函数应用于它们。我想结合上面两个子例程。
应用的函数是:
Function ConvertDates(ValueDate As Range)
Dim Dates() As String
Dates = Split(ValueDate.Text, "/")
ConvertDates = Dates(1) & "/" & Dates(0) & "/" & Dates(2)
End Function
答案 0 :(得分:0)
我可以看到您的CovertCellsToDate
子问题。这应该有效:
Sub CovertCellsToDate()
Dim c As Range
ActiveSheet.Name = "g_final"
Dim LastRowRec As Long
LastRowRec = ThisWorkbook.Sheets("g_final").Range("A65536").End(xlUp).Row
For Each c In ThisWorkbook.Sheets("g_final").Range(Cells(1, 1), Cells(LastRowRec, 98)).Cells
If InStr(c, "/") > 0 Then c = ConvertDates(c)
Next
End Sub
Dim c As Range
ActiveSheet
时要小心。如果您需要使用它,您需要确定 g_sheet是活动(当前选中)表 - 否则您将收到错误。重命名工作表后,始终使用ThisWorkbook.Sheets("g_final")
会好得多。复制临时表后,我没有看到您在任何地方更改活动工作表,因此您的问题可能是由ActiveSheet引起的。