Private Sub上需要的对象

时间:2017-02-12 08:34:51

标签: excel excel-vba vba

这是我在这里的第一篇文章。我只是写了一个简单的按钮来计算我在Excel字符表上的体验,我对此非常陌生,但我似乎无法发现这段代码有什么问题。它不断返回"编译错误:需要对象"在第2行,我所看到的其他一切都没有帮助。我之前有过几次错误,但这是我如何声明我的变量的问题(我已经习惯了python) 如果有人可以看看代码并且可能给我一些提示,那将非常感激。

Option Explicit
Private Sub addXP_Click()
    Dim addXP As Integer
    Dim oldXP As Integer
    Dim newXP As Integer
    Dim Lv As Integer

    Set addXP = Sheet1.Range("G4").Value
    Set oldXP = Sheet1.Range("A4").Value

    Set newXP = addXP + oldXP

    Set Lv = Sheet2.Range("G4").Value

    Sheet1.Range("G3").ClearContents

    If newXP >= (Lv + 1) * 1000 Then
        Range(Sheet1!A4).ClearContents
        Set Sheet2.Range("G4").Value = Sheet2.Range("G4").Value + 1

    End If
End Sub

1 个答案:

答案 0 :(得分:1)

使用VBA,并尝试为Integer类型的变量分配值时,您之前不需要Set,只需使用addXP = Sheet1.Range("G4").Value

您可以考虑使用Long代替Integer

注意:使用Sheet1.Range("G4").Value表示使用工作表的CodeName,而不一定是名为“Sheet1”的工作表。

尝试以下代码:

Option Explicit

Private Sub addXP_Click()

    Dim addXP As Long
    Dim oldXP As Long
    Dim newXP As Long
    Dim Lv As Long

    addXP = Sheet1.Range("G4").Value
    oldXP = Sheet1.Range("A4").Value

    newXP = addXP + oldXP

    Lv = Sheet2.Range("G4").Value

    Sheet1.Range("G3").ClearContents

    If newXP >= (Lv + 1) * 1000 Then
        Sheet1.Range("A4").ClearContents
        Sheet2.Range("G4").Value = Sheet2.Range("G4").Value + 1
    End If

End Sub