在excel中创建数据记录

时间:2018-06-25 14:17:23

标签: excel vba excel-vba record

目前,我有一张Excel工作表,可以计算出每天变化的某些价格。我希望有一个vba按钮,该按钮记录每天的价格以供参考,每天保存数据的最新价格(我每天都会频繁更新价格) 我在下面编写了代码,但似乎收到了错误:

  

编译错误:限定词无效

[在第一行LastRow.Offset()上)。我是vba的新手,所以我们将不胜感激

Private Sub CommandButton1_Click()

'Selecting the data to copy
Range("C23:O23").Select
Selection.Copy

'Find the last used row in Column B
Dim LastRow As Long
With ActiveSheet
    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
End With

'if still today, replace data, if not record the data on the next line
If LastRow = Date Then
    LastRow.Offset(0, 1).Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, 
Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Else
    LastRow.Offset(1, 0) = Date
    LastRow.offset(1, 1).Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, 
Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
End If


End Sub

更新:因此,我更改了一些代码,在其中我分别定义了LastRow变量:

Dim LastRow As Range
Set LastRow = Range("B31").End(xlDown)  

在else语句之后的行中,这似乎导致了另一个错误“ 1004”

LastRow.Offset(1, 0).Value = "=today"

任何建议将不胜感激

2 个答案:

答案 0 :(得分:2)

LastRow被定义为Long

Dim LastRow As Long

然后,您尝试使用Offset方法,该方法仅在Range对象上可用。

进行以下更改,您应该会很好。

Dim LastRow As Range
With ActiveSheet
    Set LastRow = .Cells(.Rows.Count, "B").End(xlUp)
End With

阅读how and why to avoid select上的这篇文章也将带您进一步。上面的代码可以进行优化以更智能地工作。

答案 1 :(得分:0)

看起来您的else语句中有错字:

LastRow.oofset(1, 1).Select