VBAを使用したネームマネージャー-マクロ呼び出しと関数呼び出しで異なる応答が返される

ブライアン

計算に使用するXLAがあり、それらの計算で使用する変数をNameManagerで作成したいと思います。rangedという名前の値がすでに存在するかどうかを確認し、存在しない場合は、ユーザーに値を割り当てさせたいと思います。Name Managerの設定に使用しているSub()があります-以下の例-:

Public Sub SetNames()
On Error Resume Next
   IsRangeName = CheckName("test")

If IsRangeName = Empty Then
   Application.ThisWorkbook.Names.Add Name:="test", RefersTo:=0
End If

End Sub

「マクロ」メニューに移動してSetNamesルーチンを実行すると、それが機能し、名前マネージャーでtest = 0に設定されます。

しかし、私がやりたいのは、これを関数で実行し、関数が名前マネージャーで変数を使用できるようにすることです。変数が存在しない場合、それらの値は名前マネージャーで初期値に設定されます。サブルーチン。

次のコードを実行しようとすると、名前マネージャーに値が設定されません。

Sub Function1()
   Call SetNames()

   -Do Other Things-

End Function

すべての名前はグローバル変数として宣言されています。

その目的は、ユーザーにアドインをインストールさせ、アドインを使用した最初の関数呼び出しで、名前を初期化するか、ユーザーが初期値を設定できるようにするために、NameManagerが設定されるようにすることです。ユーザーがマクロリボンオプションを実行し、サブルーチンを実行して名前マネージャー名を初期化することを望まない。

これに関するどんな助けもいただければ幸いです。

ティムウィリアムズ

これ私のクイックテストでは機能するようですが、最終的なユースケースが何であれ、確実に機能するはずです。これは、UDFがブックを更新できるという制限を回避するためのハックであるため、「通常の」使用法の範囲外です。

Sub SetNameIfMissing(swb As String)

    Dim r As Name, wb As Workbook
    Set wb = Workbooks(swb)
    On Error Resume Next
    Set r = wb.Names("test")
    On Error GoTo 0

    If r Is Nothing Then
        Debug.Print "adding name..."
        wb.Names.Add "test", 99
    Else
        Debug.Print "already added"
    End If

End Sub


Function SetIt(v)

    Dim wb
    wb = Application.Caller.Parent.Parent.Name

    'using Evaluate gets around the UDF restriction
    Application.Caller.Parent.Evaluate "SetNameIfMissing(""" & wb & """)"

    SetIt = "OK" 'or whatever return value is useful...

End Function

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

関数が呼び出された回数に応じて異なる値を返します

分類Dev

Djangoを使用して、フォームをサイレントに送信し、ビュー関数が呼び出されたときにWebページをリロードしないようにビューでHTTP応答を返さないようにするにはどうすればよいですか?

分類Dev

LaravelAPI呼び出しのGuzzleHTTPが期待される応答を返さない

分類Dev

内部で呼び出される異なる関数を使用して同じ関数を呼び出す

分類Dev

関数はコンソールで呼び出されると値を返しますが、関数宣言後に呼び出されると戻りません

分類Dev

JSは、関数を呼び出すか呼び出さないかによって異なる反応を示します(google maps apiが使用されます)

分類Dev

非同期呼び出しが返される前に送信されたHTTP応答

分類Dev

関数によって返される呼び出しプロシージャ

分類Dev

String.index とネストされた関数呼び出しを if then else ブロック内で使用する方法

分類Dev

ローカルJSONファイルを取得するときにAJAX呼び出しから返されたpromiseで.done()関数が実行されない

分類Dev

異なる引数を使用してVBAマクロを数回呼び出す

分類Dev

AWSLambda関数が繰り返し呼び出される

分類Dev

解決されたpromiseを返す関数の呼び出しシグネチャがない型の式を呼び出すことはできません

分類Dev

Goで関数呼び出しが繰り返されるforループ

分類Dev

ネットワーク呼び出しに応答本文が表示されていても、Reactコンポーネントからエンドポイントが呼び出されると、バックエンド応答値が空になります

分類Dev

async await for複数の呼び出しを使用した後でも、空の応答が返されるのはなぜですか?

分類Dev

関数がクロージャで呼び出される場合とRustで直接呼び出される場合で、ライフタイムが異なるのはなぜですか?

分類Dev

状態が変更されるたびに、Reactコンポーネントのレンダリング関数でJSXを返すメソッドが呼び出されると、パフォーマンスが低下しますか?

分類Dev

関数をsinonにスタブして、呼び出されるたびに異なる値を返す

分類Dev

ngOnDestroy関数で呼び出されたときにAPI呼び出しが完了するのを待つ方法は?

分類Dev

Python:関数内のオブジェクトが、呼び出された方法に応じて異なるid()を返すのはなぜですか?

分類Dev

次の2つの呼び出しで最初の呼び出しからの応答を使用するAngular / RXJSネストされたオブザーバブル

分類Dev

foo:bar()関数呼び出しでコロンを使用すると、SyntaxErrorではなくReferenceErrorが返されるのはなぜですか?

分類Dev

私のjQuery、AJAX呼び出しは、PHP関数から適切にフォーマットされたJSONデータが有効に返されるとnull応答を受け取ります

分類Dev

PHPとJQueryの関数呼び出しが繰り返される

分類Dev

ビューによって呼び出された関数でHTTP応答を返します

分類Dev

再帰的なproc呼び出しに1を追加すると、行われた呼び出しの数が返されるのはなぜですか?

分類Dev

アラームマネージャーBroadcastReceiver、フラグメント内から呼び出されたときにsetRepeatingが機能しない

分類Dev

setStateの後にファットアロー関数を呼び出してネイティブに反応する:関数が定義されていない

Related 関連記事

  1. 1

    関数が呼び出された回数に応じて異なる値を返します

  2. 2

    Djangoを使用して、フォームをサイレントに送信し、ビュー関数が呼び出されたときにWebページをリロードしないようにビューでHTTP応答を返さないようにするにはどうすればよいですか?

  3. 3

    LaravelAPI呼び出しのGuzzleHTTPが期待される応答を返さない

  4. 4

    内部で呼び出される異なる関数を使用して同じ関数を呼び出す

  5. 5

    関数はコンソールで呼び出されると値を返しますが、関数宣言後に呼び出されると戻りません

  6. 6

    JSは、関数を呼び出すか呼び出さないかによって異なる反応を示します(google maps apiが使用されます)

  7. 7

    非同期呼び出しが返される前に送信されたHTTP応答

  8. 8

    関数によって返される呼び出しプロシージャ

  9. 9

    String.index とネストされた関数呼び出しを if then else ブロック内で使用する方法

  10. 10

    ローカルJSONファイルを取得するときにAJAX呼び出しから返されたpromiseで.done()関数が実行されない

  11. 11

    異なる引数を使用してVBAマクロを数回呼び出す

  12. 12

    AWSLambda関数が繰り返し呼び出される

  13. 13

    解決されたpromiseを返す関数の呼び出しシグネチャがない型の式を呼び出すことはできません

  14. 14

    Goで関数呼び出しが繰り返されるforループ

  15. 15

    ネットワーク呼び出しに応答本文が表示されていても、Reactコンポーネントからエンドポイントが呼び出されると、バックエンド応答値が空になります

  16. 16

    async await for複数の呼び出しを使用した後でも、空の応答が返されるのはなぜですか?

  17. 17

    関数がクロージャで呼び出される場合とRustで直接呼び出される場合で、ライフタイムが異なるのはなぜですか?

  18. 18

    状態が変更されるたびに、Reactコンポーネントのレンダリング関数でJSXを返すメソッドが呼び出されると、パフォーマンスが低下しますか?

  19. 19

    関数をsinonにスタブして、呼び出されるたびに異なる値を返す

  20. 20

    ngOnDestroy関数で呼び出されたときにAPI呼び出しが完了するのを待つ方法は?

  21. 21

    Python:関数内のオブジェクトが、呼び出された方法に応じて異なるid()を返すのはなぜですか?

  22. 22

    次の2つの呼び出しで最初の呼び出しからの応答を使用するAngular / RXJSネストされたオブザーバブル

  23. 23

    foo:bar()関数呼び出しでコロンを使用すると、SyntaxErrorではなくReferenceErrorが返されるのはなぜですか?

  24. 24

    私のjQuery、AJAX呼び出しは、PHP関数から適切にフォーマットされたJSONデータが有効に返されるとnull応答を受け取ります

  25. 25

    PHPとJQueryの関数呼び出しが繰り返される

  26. 26

    ビューによって呼び出された関数でHTTP応答を返します

  27. 27

    再帰的なproc呼び出しに1を追加すると、行われた呼び出しの数が返されるのはなぜですか?

  28. 28

    アラームマネージャーBroadcastReceiver、フラグメント内から呼び出されたときにsetRepeatingが機能しない

  29. 29

    setStateの後にファットアロー関数を呼び出してネイティブに反応する:関数が定義されていない

ホットタグ

アーカイブ