2012-02-27 11 views
2

このマクロは、1回のクリックで実行されます。私はエラーを受け取ります。VBAデバッグの問題

実行時エラー「91」: オブジェクト変数またはブロック変数Iは、デバッグをクリックし

を設定し、それは、このハイライトされたエリアに私をリードしないと。ここで

Selection.Find(What:=DateString, After:=ActiveCell, LookIn:=xlFormulas, _ 
     LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
     MatchCase:=False).Activate 

全体の機能は何も見つからなかった場合、それは何も「をアクティブにしない」ことができないとして、あなたはエラーになりますあなたのコードを持つように、検索()関数は、Rangeオブジェクトを返します

Function GetBalance(Month As Integer) As Currency 
'This function is called by the Calculate_Balance subroutine. It 
'finds the appropriate month's balance on an employee sheet and sends 
'it back to the calling routine. 

Dim DateString As String 
Dim RangeString As String 
Dim Balance 
Dim BalDate As Date 
Dim strCurrMonth As String 
Dim strCurrYear As String 
Dim strFirstDayCurrMonth As String 

    strCurrMonth = CStr(DatePart("m", Date)) 
    strCurrYear = CStr(DatePart("yyyy", Date)) 
    strFirstDayCurrMonth = strCurrMonth & "/1/" & strCurrYear 
    dtmFirstDayCurrMonth = CDate(strFirstDayCurrMonth) 

    DateString = Month & "/1/" 

    Columns("A:A").Select 
    Range("A6").Activate 
    Selection.Find(What:=DateString, After:=ActiveCell, LookIn:=xlFormulas, _ 
     LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
     MatchCase:=False).Activate 

    CurrRow = ActiveCell.Row 
    BalanceRow = CurrRow - 1 'Move up 1 row to get last balance for this month 

    RangeStr = "E" & BalanceRow 
    DateRangeStr = "A" & BalanceRow 

    BalDate = Range(DateRangeStr).Value 
    If BalDate <= dtmFirstDayCurrMonth Then 
     Balance = Range(RangeStr).Value 
    Else 
     Balance = 0 
    End If 

    GetBalance = Balance 

End Function 

答えて

4

です。コードを次のように変更してください:

Dim rng As Range 

Set rng = Selection.Find(What:=DateString, After:=ActiveCell, LookIn:=xlFormulas, SearchDirection:=xlNext, MatchCase:=False) 

If Not (rng Is Nothing) Then 
    rng.Activate 
End If 
+0

私はこれを試しても、エラーは表示されなくなりました。しかし、マクロは各行で実行されました... – PlatiNUM

+0

元の問題に対処していると思われるので、幸せであれば回答を受け入れてください。 – markblandford

+0

エラーの問題は解決しましたが、依然として正しくありません。 – PlatiNUM