这是我在这里的第一篇文章。我只是写了一个简单的按钮来计算我在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
答案 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