上周,我创建了此宏,该宏使我可以创建数据记录。它将数据放置在日期旁边,如果我们仍在同一日期(并且如果没有移到当前日期),则设置为替换日期。这是代码:
Sub Record()
'Get all the dates
'Selecting the data to copy
Range("C23:O23").Select
Selection.Copy
'Find the last used row in Column B
Dim LastRow As Range
With ActiveSheet
Set LastRow = .Cells(.Rows.Count, "B").End(xlUp)
End With
'if still today, replace data, if not record the data on the next line
If LastRow = Format(Date, "dd/mm/yyyy") Then
LastRow.Offset(0, 1).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats,
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Else
LastRow.Offset(1, 0).Value = Format(Date, "dd/mm/yyyy")
LastRow.Offset(1, 1).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats,
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Application.CutCopyMode = False
End Sub
问题是,上周它运行良好。今天,当我打开它时,即使我在vba代码中设置了格式,它似乎也将日期设置为美国格式(07/02/2018,而不是02/07/2018)。 Thisa使该宏无效,因为它仍然会检查英语日期格式,因此每次单击按钮时都会跳过一行。
任何帮助将不胜感激。
答案 0 :(得分:1)
仔细检查代码,我想知道问题的部分原因是否在于您使用FORMAT返回最后一个字符串向最后一个单元格添加了日期。
代替LastRow.Offset(1, 0).Value = Format(Date, "dd/mm/yyyy")
,只需使用LastRow.Offset(1,0) = Date
。
要更正工作表上的日期,可以将值乘以1,或添加0以将其转换为数字而不是文本(然后格式化为日期):
1
,然后复制该单元格。 Multiply
,然后单击“确定”。 如果“选择性粘贴”方法不起作用,此代码也应该起作用,但是我不认为它正在解决问题的根源。
If CDATE(LastRow) = Date Then