2016-10-25 4 views
1

セルを引数として受け取り、そこからさまざまなRange.Offsetを使用して動作するVBA関数を作成しようとしています。この関数はワークシートのセルで呼び出されます。テストのために、私はこの単純なスクリプトを使用しています:私は仕事へのセル参照を取得することができるかどうかを確認するにはExcel:ワークシートからvba関数を呼び出すときに現在のセルを引数として渡します。

Public Function testPublic(targetCell As Range) As Boolean 
    targetCell.Offset(0, 3).Value2 = "Test is successful!" 
    testPublic = True 
End Function 

を、私はそのようなC5のような単純な参照を渡すが、私は唯一#VALUEを入手します!エラー。これに何が間違っているかわからない。

はまだ機能コードは以下の通りです

If testPublic(targetCell:=Range1) Then 
    MsgBox "success" 
End If 

コードを呼び出す以下

+1

あなたはワークシート内の別のセルを更新するために、ワークシートからUDFと呼ばれる機能を使用することはできません。機能は、機能のみを含むセルに値を返すことができます(配列数式を複数の値を返すことができますが、数式が入力されたセルだけに戻ります)。詳細については、https://support.microsoft.com/en-us/kb/170787 –

+0

を参照してください。確かに@TimWilliamsが実際に問題になっています。私は細胞操作コードを削除し、それは動作します。おそらくあなたは答えとして投稿できるので、私はそれを1つに設定することができます – Raestloz

答えて

4

:関数は関数を含むセルに値を返すことができる(配列数式が複数の値を返すことができ、しかし再び式が入力されたセルにのみ)。

詳細については

参照:https://support.microsoft.com/en-us/kb/170787

0

てみてください動作しません、バリアントとして範囲を変更しようとしました。ロジックごとにByRefとByValを変更します。ワークシート内の別のセルを更新するワークシートからUDFと呼ばれる機能を使用することができない

Public Function testPublic(ByRef targetCell As Range) As Boolean 
    targetCell.Offset(0, 3).Value2 = "Test is successful!" 
    testPublic = True 
End Function 
+0

問題は実際にはUDFが他のセルの値を変更できないことです。私はコードの最初の行を削除し、それは動作します – Raestloz

+0

私のマシン上の上記のコードは、他のセルの値、つまりoffset(0,3)を変更することができました。 –

+0

OPはワークシート式からその関数を呼び出していますが、Subからは呼び出されていません。 –

関連する問題