2017-02-12 12 views
0

これは私の最初の投稿です。私はExcelの文字シート上の私の経験を計算するための単純なボタンを書いていただけで、これは非常に新しいですが、私はこのコードで間違ったものを見つけることはできません。 2行目に「Compile Error:Object required」という文字列が返されています。私は数回前にエラーが発生しましたが、変数を宣言していたのは問題でした(私は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

Whun VBAを使用して、タイプIntegerの変数に値を代入しようと、あなただけのaddXP = Sheet1.Range("G4").Valueを使用し、前Setを必要としません。

Integerの代わりにLongを使用するとよいでしょう。

:シートのCodeName、および名前「シート1」と必ずしもワークシートを使用してSheet1.Range("G4").Value手段を使用して。

以下のコード試してみてください。

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 
+0

@Ethan Seitterあなたは上記の私の答えでコードをテストがありますか?どんなフィードバック? –

関連する問題