5

VBA アプリケーションを作成しており、次のコードがあります。


Dim previousCell As range


Private Sub Worksheet_SelectionChange(ByVal target As range)

Application.EnableEvents = False
On Error GoTo ws_exit:


Set previousCell = target
getEffort (previousCell) '**Here i get object required** 

ws_exit:
    Application.EnableEvents = True
    MsgBox Err.Description

End Sub

Private Function getEffort(ByVal cell As range)

' do soemthing

End Sub

エラー メッセージが表示される理由がわかりません: Object required error at getEffort(previousCell)。を渡すと、Target機能します。

ありがとう

4

3 に答える 3

0

2 つのこと: まず、()getEffort を関数として呼び出すときに、何らかの戻り値を使用したり含めたりする必要はありません。また、それをサブ/機能にするかどうかを決定する必要があります。現在、両方を使用しています。おそらくあなたはそれをサブにしていますか?

Dim previousCell As range


Private Sub Worksheet_SelectionChange(ByVal target As range)

Application.EnableEvents = False
On Error GoTo ws_exit:


Set previousCell = target
getEffort previousCell '**Here i get object required** 
'or...
call getEffort(previousCell)

'add this too..
'exit sub
ws_exit:
    Application.EnableEvents = True
    MsgBox Err.Description

End Sub

Private sub getEffort(ByVal cell As range)

' do soemthing

End sub

また、メイン プログラムはエラー ステートメントの前に終了することはないため、常にそのメッセージ ボックスがポップアップ表示されます。Exit Sub空白のメッセージ ボックスが常に表示されないように、エラー ラベルの前に追加してみてください。

于 2012-09-06T17:55:17.313 に答える
0

エラーが発生しているオブジェクトのインスタンスにターゲットが設定されていないようです。ターゲットを渡すと、関数 function(argument) への引数がオブジェクトのインスタンスに設定されます。previouscell = target target を実際に何かにする必要がある場合、実行エラーが発生します。

previouscell = ActiveCell を設定してみてください

于 2012-09-06T17:29:40.450 に答える