2017-01-16 5 views
3

このWebサイト、外部フォーラム、雑多な議論グループには、何千ものコメントやUDFツールチップに関する何百もの質問があることがわかりました。私はVBAとExcelには本当に新しいですが、最近多くのことを学んでいます。私はこのフォーラムを見たことがありますので、Excel-DNAなどのサードパーティの回避策へのリンクを送ってはいけません。これはNOTと同じ質問です。私はツールチップを作成したくないので、UDFパラメータをセルにオートコンプリートしたい。Excel VBA UDFオートコンプリートパラメータ


短くて、タイトルにはすべてが書かれていますが、UDFパラメータを自律的に入力する方法があります。

私はDocumentation siteを検索しましたが、これに関連する問題はありませんでした。だから、次のステップは、ユーザーのコンピュータメモリで非常にやさしい、ユーザーにとって比較的簡単なソリューションを見つけることでした。また、多くの時間を費やさずにフレンドリーな開発者はもちろん、クロスプラットフォームの互換性と簡単に構築されていますカスタマイズする。

私はExcelに慣れていないので、どのようにアドインがWorkbookオブジェクトに関して機能するかはわかりません。私は試行錯誤でそれを見つけることができますが、私は私の望ましい結果に似ているドキュメントサイトで見つけた最も近いものは、自動修正を強制的にされています。これは速いです

With Application.AutoCorrect 
    .AddReplacement "=EPP(", "=EPP(payrate,hrs)" 
End With 

FigA

仕事は終わった! ........しかしそれはそれです。

これは2つの理由に適しています:

  • 式/ UDFは一意=記号で、開始されているので、私は、ユーザーが間に入力しているかを把握するためにあまりにも多くのコーディングを行う必要はありませ んその他の理由
  • コードとエラーの可能性を低減します。特にWin 64bit版とは異なる構文を必要とする32bit版と、APIを使用するMacユーザーには可能です

理由はありますが、悪い点は10種類あります。カーソルがために、通常の文字列の末尾に行く

  • など

    1. それは、次のセルに移動するには、Enterキーを押すタブなどをことができます下のセル:私はいくつかをハイライト表示しますオートコレクトが、中に充填する必須パラメータには望ましくない。
    2. 私は手動でこれは私ができたネストされた関数

    と式に無用である「AddReplacement」配列

  • をキュレートする必要がありますするつもりですそれらの問題のいくつかを修正するために、以下にそれを変更することにより、ユーザを押すと入力した場合、ここで何が起こる

    With Application.AutoCorrect 
        .AddReplacement "=EPP(", "=EPP(<payrate>,<hrs>" 
    End With 
    

    があり、Excelが自律的にただし、エラーはこの状況でスローされます、閉じ括弧が含まれます、「Excelが、これは、Aであると考えて式エラー:1 + 1 = 2 '、Excelは<>記号のために数式ではないと判断するためです。だから、ユーザーは100%確信しているので、レビューする必要があります。

    Butttttt .....すべてのことを言ってやって、1つの大きな障害が残っている、ユーザはこれを埋めるためにスペースを入れなければならない。MUSTああ。私がエクセルを使っている限り、私は関数を選択した後でスペースを押したことはありませんでした。誰もがそれが自然なものになるとは想像できません。

    だから私はこの動作を回避するためにいくつかの方法を試しました。これまでに何もできませんでした。私は、オートコレクトオブジェクト内Application.SendKeysを使用してみました:

    With Application.AutoCorrect 
        .AddReplacement "=EPP(", "=EPP(" 
        .Application.SendKeys "^+A" 'CTRL + SHIFT + A also tried " " for space 
    End With 
    

    次の私は、Tabキーを押したときに処理するためにApplication.OnKeyイベントを使用してみましたので、私は解読でき、それが機能/ UDFの後だった場合や、私は入れませんではありません何らかの理由でマクロが記述されていない可能性があります。とにかくこれは良いことだと思うが、そのオプションについて考えることは悪夢であるかもしれない(ユーザーは現在何をしているのか?ユーザーはどこですか?ユーザーフォームのタブを押しているユーザーなどです)私がそのドキュメンテーションサイトで見つけることができなかったものが既に組み込まれていない限り、私は困惑しています。

    誰もがコアの問題を解決する方法はありますか?私は現在、カーソルの位置などを設定するような技術は気にしません。スペースを押さなくても基本的なオートコンプリートを行うだけです。基本的に、私はCTRL + SHIFT + はUDFが


    セルに入力された後にUPDATE 1

    わかりません、そうで遊んで後に何をエミュレートしたいと思いますこれ以上、私は助けるかもしれないより多くの情報を共有しています。

    私はApplication.OnKeyのタブに関連するイベントで遊んだり、数式のリストで数式オプションが選択されたときにMicrosoftが特別なイベントハンドラを持っているという結論に達しました。誰かがそれにアクセスする方法を理解するのを助けることができるなら、私はこれで前進できると思う。私のDebug.Print文字列 "Tab was pressed"は、提案された数式から数式を選択するとき、最初のTabキーで実行されませんでした。 Applicationオブジェクトは、そのリストから何かを選択しているため、タブ・プレスとして認識しません。そのため、自分のイベント・ハンドラを持っていると信じられます。ちょうど私達が行くことが良いと思うことをつかむことがあります。

    一方、Excel>オプション>数式でFormula Autocompleteをfalseに設定することで、スペースを必要とせずに、これを動作させるのが醜い方法を発見しました。リストは入力されず、 `= EPP("と入力すれば残りの部分は必要に応じて入力するだけですが、これはユーザー固有の設定なので、スケーリングには最適ではありません)

  • 答えて

    0
    +0

    明らかにあなたは私の質問を誤解してしまった。それはイノベーションの陳述ではない。誰かが第三者の解決策ではなく単純に、私が試したことを述べた私が見つけた最も近いものでした)。私はcontrol + shift + aを押すことでこれが達成されるかどうかは十分に分かっていますが、これは私のためではありません。 CTL + SHFT + Aについて知らず、ネイティブエクスペリエンスをエミュレートする一般ユーザー。申し訳ありませんが、私のタイトルが誤解を招くようであれば、私はオートコンプリートを意味するわけではありません。 UDF名以上のパラメータ – soulshined

    +0

    なぜあなたは答えとして質問を投稿するのか分かりませんか?私の質問は、私が試したことと私の最終目標が記載されているOPの中で概説されています(すべてがSOのための良い質問形式に従います)。免責の下で私の最初の文はそれをうまくまとめます。 – soulshined

    +0

    お元気ですか、私は私の答えを突きつけた、あなたを困らせて申し訳ありません。今気をつけてください。 –