2010-12-08 20 views
2

Excelでグローバル化された範囲の名前をグローバルなものよりも使用するほうが良いと思います。 Excel 2003では、A列の左上にある名前入力ボックスを使用して範囲を作成すると、それらがグローバルであることがわかりました。ほとんどの場合、Rangeを同じ名前のシートにローカルに持たせることは不可能だが、これはExcelとVBAの両方で非常に混乱した動作を引き起こす可能性があると理解している。グローバル範囲よりもExcelでローカル範囲を使用するための納得している議論

私はグーグルで、被験者についての記事を見つけることなく(私はこの後に自分自身のブログをしなければならないかもしれません)。私は、他のプロフェッショナルなExcel開発者が何をしているのか、またその理由を知りたいと思った

答えて

1

グローバルとローカルの問題は、どのような種類のユーザーに対処し、どのようなソリューションを構築するかによって異なります。チャールズは、ユーザーが範囲や数式に多額の投資をしているソリューションを扱うかもしれません。私はVBAコードで非常に深いです。ここで必要とされるアプローチには違いがあります。私はチャールズが間違っているとは言いません - 彼はおそらく彼が開発したソリューションのために正しいです。しかし彼は私のために間違っている

私はプログラム的に異なるシート上に同じ範囲を生成するモジュラーなソリューションを多数使用しています。ハードコードされた範囲参照をコード内で使用することを制限するのに役立ち、また異なるテンプレート間で機能する汎用ソリューションを提供する方法を提供するため、名前を広く使用しています。私は、標準的な範囲ドロップダウンの次の数式バーを使用して範囲を作成することはめったにありません。

チャールズがグローバル/ローカル混乱について考える点は、すべてがプログラム的であり、その種の間違いはユーザーの不満ではなくバグであるため、私には当てはまりません。彼らはこれらの範囲を見ません。

ユーザーが名前とやりとりしている場合は、Excelがユーザーの混乱を避けるために別の方法でグローバル名に署名してもらいたいと思います。私の経験では、範囲を定義すれば、ユーザーは問題にはなりません。それらの名前はすでに存在しているので、ローカル/グローバル問題を心配する必要はありません。

相対的なものと絶対的なものとの間の範囲名の問題には取り掛かりません...それは、ユーザー混乱のもう1つの原因です。

+0

また、私はVBAの重い環境から来ています。ローカル名はグローバル名よりも好ましいと私は思います。私はそれについてブログのエントリーをして、私がそれを合理化したら、人々が何を考えているかを見なければならない。入力をありがとう – FinancialRadDeveloper

2

ローカル名を使用することの望ましさについて意見が異なります。
一方で、可能な限りスコープを制限することが望ましいので、Localを使用してください。
一方、ローカル名が重複している場合(同じ名前が複数のシートに存在する場合)、エラーの可能性は急速に高まります。ローカル名が重複していない場合は、その使用にはあまり意味がありません。また、誤ってローカル名と同じ名前のグローバル名を作成することは簡単です。これは混乱し、エラーを起こしやすい(一部はバギー)Excel/VBAの動作につながります。
Freebie Name Manager addin(Jan-Karel Pieterseと私自身が作成)は、ローカルとグローバルの簡単な変換、ローカル名の可視性の改善、フィルタリング、重複したグローバル/ローカル名のフラグ付けなどを可能にすることにより、ローカル名を扱いやすくします。
VBAの観点からはほとんど使用しませんが、数式の観点からは、ローカル名が有用な場合があります。

1

ブックはビジネスアプリケーションであり、シートはモジュールです。ソフトウェアの問題のように考えてください。

あなたは、可能な限り、あなたの名前の範囲を制限したい:

  1. を偶発し、目に見えない誤用を最小限にするために。
  2. 以前に名前が使用されていたかどうかを心配しないようにする。
  3. 「どのようなH ...これを変更しましたか」の検索の範囲を最小限に抑えるために
  4. 何も費用がかからず、グローバルは何の利益ももたらさないためです。

ローカル名へのクロスシートの参照は余分な作業であり、実際には偶発的なことはほとんどないので、私はチャールズとローカル名を重複させるとエラーが発生する可能性が高くなります。

私たちが構造化プログラミングを発明したときに、ブランクコモンも取り除かれた理由があります。その根拠はスプレッドシートにも同様に適用されます。

スプレッドシートモデルを非常に堅牢にするために役立つもの:グローバルを宣言することを検討しているとき、またはクロスシート参照を行っているときは、関数を作成するか、クラス。必ずしもそうとは限りませんが、「面白い」計算をカプセル化することで複雑さを減らすことができることがしばしば十分です。

0

これは、意見の問題です:異なるユーザーは、異なる設定を持つことになります。

グローバル名を使用しています。なぜなら、ワークブックの式とプロジェクト全体のVBAプロセスで、ブック全体の範囲を識別する便利で安定したラベルが必要なのです。

本質的に、名前付き範囲は、グローバル変数であり、安定したクロスシート処理に不可欠なツールと見なされます。

ローカル名は、同じ名前の別のシートで異なる範囲を宣言するためのもので、混乱やエラーのレシピです。つまり、ジョエル・グッドウィンは、ローカル名を使用する非常に良い理由を答えました。モジュール・コード(テンプレート・ジェネレータのようなもの)は、別のシートで同じことをします。私はそれを正確に行うテンプレートジェネレータを構築しました。

JBAのネームマネージャーは私が働いているところで多くの使い方をしていますが、設計された混乱やエラーを排除するものではありません。マイクロソフトの実装によって。