VBA格式功能不起作用

时间:2018-07-02 07:41:54

标签: excel vba excel-vba

上周,我创建了此宏,该宏使我可以创建数据记录。它将数据放置在日期旁边,如果我们仍在同一日期(并且如果没有移到当前日期),则设置为替换日期。这是代码:

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使该宏无效,因为它仍然会检查英语日期格式,因此每次单击按钮时都会跳过一行。

任何帮助将不胜感激。

1 个答案:

答案 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