2016-09-16 9 views
0

Name Managerに名前を作成しました。 VBAコードで自分の関数に "MyRange1"という名前を渡すには? ExcelでName Managerで作成されたパス名VBAにExcel

=MyFunction(MyRange1) 

MyFunctionのは、次のとおりです。

Public Function MyFunction(nameDefined As Variant) As String 
    'How get value of nameDefined ?? 
End Function 
+1

'Range(" MyRange1 ")' –

+0

@ScottCraner私の関数 '= MyFunction(Range(" MyRange1 "))'では機能しない 'Range(" MyRange1 ")'を渡しません。 – Ragnar

+0

= MyFunction(MyRange1) –

答えて

2

名前付き範囲を通過させる方法がありますようString

  • として

    1. は、 Rangeオブジェクト

    のでUDF()は、ワークシートのセルにのいずれかだろう。

    =myudf("Name1") 
    

    又は

    =myudf(Name1) 
    

    天然、UDFは()に符号化されなければなりませんどちらか一方を期待してください

    のみを使用するとボラティリティの問題が発生する可能性があります。

    EDIT#1:

    ここではRangeなくStringを渡すの一例です。以下のようである)

    enter image description here

    UDF(::

    Public Function MyFunction(rng As Range) As String 
        Dim r As Range 
        For Each r In rng 
         MyFunction = MyFunction & "..." & r.Text 
        Next r 
    End Function 
    

    その後、我々は次のようにワークシートのセルにそれを使用することができます。

    =MyFunction(MyRange1) 
    

    私たちは同じようMyRange1を作成すると言いますenter image description here

    UDF()に範囲があれば、そこに含まれる項目のリストを取得できます。

  • +2

    "当然ながら、UDF()は、どちらか一方または両方を期待するようにコード化する必要があります(渡された引数に' TypeName'を適切に使用して)。 –

    +0

    ありがとうジョン.... *(もう一度)* –

    +0

    それは動作しますが、 'myRange1'がsrtringリストの場合は?どうやって進める? – Ragnar

    0

    同様の質問を把握するために、あなたがコードにブレークポイントを入れて、ローカルウィンドウを分析することができます

    enter image description here

    ローカル]ウィンドウから、あなたがnameDefined(2,1)
    と「STR2」にアクセスできることに気づくことができます (またはExcelのバージョンでは、それは水平アレイのnameDefined(2)かもしれません)

    また、VBAの機能の一部を実行時の型を確認することができます。

    "Range(" MyRange1 ")`
    関連する問題