2017-04-07 9 views
0

私はVBA経由でExcelで関数を作成しようとしており、その関数内でinbuilt関数を使用できるかどうか疑問に思っています。たとえば、LookupやMatch.Iのような関数は、VBA &の式を持つソリューションを持っていますが、関数が同じことをすることができるかどうかを知ることに興味があります。VBAによって作成されたユーザー定義関数またはカスタム関数内でexcel inbuilt関数を使用できますか?

VLookupが最初に見つかったアイテムの値だけを返す関数を作成しようとしています。いないすべての組み込みワークシート関数をVBAでこのように使用することができます

Public Function whatever(rin As Range) As Variant 
    Dim mx As Variant 
    mx = Application.WorksheetFunction.Max(rin) 
    whatever = Application.WorksheetFunction.Sum(rin)/mx 
End Function 

注:ここでは

'function which can return the Vlookup value only for 1st found value 
Function SLOOKUP(Pvalue As Range, Rng As Range, Rng1 As Range, pIndex As Long) 

    Dim Cvalue As Variant 
    Dim Mvalue As Long 
    Dim Uvalue As Long 
    Dim Result As Variant 
    Result = "" 

Cvalue = Pvalue.Value 
Mvalue = Application.Worksheet.Function.Match(Cvalue, Rng, -1) 
Uvalue = Pvalue.Row 

If Mvalue = Uvalue Then 
Result = Application.Worksheet.Function.VLookup(Cvalue, Rng1, pIndex, 0) 
Else 
Result = 0 
End If 

SLOOKUP = Result 

End Function 
+1

答えは「はい」、(すなわち、特にUDFのが、一般的に環境を変更することはできません)、いくつかの注意事項/制限付き。 より具体的にするには、実行しようとしていることと、作成または使用しようとしているコードを含める必要があります。 –

+0

私はコードを追加しました。あなたの考えをここに教えてください。 – user3200076

+0

どのような問題があるようですか?エラーはありますか? –

答えて

1

MAX()SUM()を使用する例です。ここで利用可能なものは以下のとおりです。

List of Worksheet Functions Available to Visual Basic

+0

ありがとう、どのような機能を使うことができないのでしょうか? – user3200076

+0

@ user3200076私の編集を参照してください。 –

+0

私がMatchとVlookupを使用すると、何とか私のコードがうまくいきません。 – user3200076

関連する問題