我想创建一个宏,该宏使用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
我可以看到你的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
- 正如@TimWilliams提到的ConvertDates()拼写错误
- 你需要
Dim c As Range
- 使用
ActiveSheet
时要小心。如果您需要使用它,您需要确保g_sheet是活动(当前选择的)工作表,否则会出现错误。重命名工作表后,最好始终使用ThisWorkbook.Sheets("g_final")
。我没有看到你在复制临时工作表后在任何地方更改活动工作表,所以你的问题可能是由ActiveSheet引起的