問題タブ [named-ranges]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vba - あるシートから範囲をコピー 別のシートのセル値に基づいて同じシートに範囲の一部を貼り付け
現在、別のシートの値に基づいて、ある範囲から別の範囲に値をコピーするコードを作成しました (コピーと貼り付けは 1 つのシートで行われます)。
ただし、この値は 12 個の値のいずれかになる可能性があるため、コピーして貼り付ける範囲は狭くなります。
私はVBAに慣れていないので、Excelで数十のコピー範囲と数十の貼り付け範囲を作成して、VBAを介してElseIfステートメントを処理し、他のシートのセル値に応じてコピーして貼り付けました。
コードをより最適化し、ブック内の名前付き範囲を少なくする方法はありますか?
以下に私のコードを貼り付けます(最初のシートで選択できるため、コピーと貼り付けの両方の名前付き範囲は単に1列少ないだけです):
vba - VBA: 範囲に名前を付ける
解決策を探しましたが、見つからないようです。存在する場合は、それを教えてください。問題は、VBA で範囲に名前を付ける方法です。
正常に動作しますが、変更するとすぐに
私に問題を与えます。wrkSheet は、以前に定義されたワークシート オブジェクトであることに注意してください。
ありがとう
excel - Create chart title from sheetname
I am hoping to amend my charts using VBA
I have created a Named Range using formula, named it SheetNames
Then in VBA, I was trying to change the chart title:
But unsuccessful. I tried using a formula to call teh sheet name in cell B1 and it works
then in VBA using the follow and work well:
What could I do to make the first bit works?
vba - Excel VBA: ワークブック スコープ、ワークシート依存の名前付き数式/名前付き範囲 (アクティブなワークシートに応じて結果が変わります)
編集: わかりやすくするためにタイトルを変更しました。
簡単な要約:ワークブック スコープのワークシート依存の名前付き数式 (以下で説明します) の動作が Excel の文書化された機能であるかどうかを知りたいです。もしそうなら、どこかのドキュメントの方向性を教えてください - 私はこれについてオンラインで何も見つけられないようです (おそらく私は悪い検索用語を使用しています..?) そして実際に何かを使用したくありません.バグであり、後のバージョンで消える可能性があります!
厳密に言えば、これは実際には VBA に関する問題ではありません。ただし、名前付きの数式は、私や他の人が VBA コードで常に使用するものであるため、私が考える主題にはまだ適用できます。
編集: 以下の VBA コードは正確に正しくない可能性があることに注意してください。テストしていません。
通常の方法
工学/科学計算では、同じ名前の数式/範囲を同じワークブックで複数回使用する必要がありましたが、ワークシートは異なります。簡単な例として、円の領域に次のようなものを実装します。
次の名前付き範囲/数式のセットが得られます (各ワークシートにスコープが設定されています)。
これはもちろん問題なく機能しますが、将来の変更が難しいという大きな欠点があります。したがって、たとえば、数式が変更された場合 (もちろん、円の面積は変更されません! しかし、AASHTO LRFD 高速道路設計コードの数式は、たとえば、ほぼすべてのエディションを変更します!)、すべてのインスタンスを編集する必要があります。すべての名前式の。これは、VBA プロシージャを作成しても面倒です。
代替方法
先日、Excel 2013 で偶然に以下を発見しましたが、オンラインのどこにもそれについて何も見つけることができませんでした。これは私がそれを使い始めるのをためらわせます。
代わりに、次の 1 行のコードを実行するとします。
これにより、次の単一の名前付き範囲/式が生成されます (ワークブックにスコープが設定されています)。
=PI()*!Radius^2
<--- 数式は Workbook にスコープされます。注!Radius
、ありませんRadius
。
これは次のものと同じではないことに注意してください (感嘆符はありません)。
=PI()*Radius^2
<--- ここでRadius
は、スコープが Workbook であることに注意してください。
これで、AreaCircle
上記の最初のメソッドとまったく同じ動作が生成されます。ローカルのワークシートで定義された Radius の値に基づいて結果が生成されます。したがって、名前付き範囲が 2 つある場合Radius
(1 つは 用Sheet1
、もう 1 つは 用Sheet2
) は、それが使用されているシートAreaCircle
の の値に応じて計算されます。Radius
さらに、新しいワークシートを追加するたびに、この (および他のすべての) 数式の新しいバージョンを追加する必要がなくなるという追加の利点もあります (これは非常に大きいです!)。
これは説明が難しい動作です。私の説明に混乱している場合は、次の手順を実行してこの動作を再現できます。
- ワークブックで複数のワークシートを作成し、 のセルに「1」、シート 2 のセル
A1
にSheet1
「2」、シートA1
3 のセルに「3」A1
などを入力します。 - 名前付き範囲
CellA1
(Workbook スコープを使用) を作成し、式に次のように入力します。=!$A$1
=CellA1
任意のセルに入力すると、 では「1」Sheet1
、 では「2」Sheet2
などになります。
ドキュメンテーション?
やあ、あなたはそれを作りました - ここで私に固執してくれてありがとう!
それで、私が上で言ったように、誰かがこの「機能」のドキュメントを教えてもらえますか? もっと複雑なプロジェクトでこれを実装したいと思っています。他に何もないとしても、Name Manager のナビゲートが約 20 倍簡単になります (すべての重複した名前はありません)。
vba - xlam ファイルの参照コンテンツを配置する場所
だから私は、特にエイリアスの膨大なリストを含むExcelアドインを持っています。たとえば、ISO コードを含む国名、大陸を含む国など (カナダがアメリカにあることや、コートジボワールの国語がフランス語であることなどを簡単に知ることができるようにするため)。現在、別のワークブックの名前付き範囲をチェックするすべての関連関数を備えた xlam があります。
要約すると、2つのファイルがあります。
- macros.xls (Angola = AGO などの名前付き範囲がすべて含まれています)、および
my_functions.xlam (エイリアス名を取得するために Excel から呼び出すことができる関数があります)。関数の例は次のとおりです。
関数 nti(v) nti = WorksheetFunction.VLookup(Trim(v), Range("macros.xls!nti"), 2, 0) 関数の終了
ここで、 ntiは使用する関数で、macros.xls!ntiは参照している名前付き範囲です。
これはすべてうまく機能しますが、.xlam ファイルは Excel で開いたり編集したりできず、VBA エクスプローラーでしか編集できないため、この機能には 2 つのファイルが必要です。
質問:簡単に変更できるリストと、これらのリストを参照する関数を 1 つのファイルに含めるにはどうすればよいですか? 関数は、私が作業している他のファイルで利用できるはずです。
不適格なソリューション:
- my_functions.xlam を .xls として一時的に保存し、すべての名前付き範囲をコピーしてから、.xlam として保存し直します。名前付き範囲を変更するたびにこれを行うのは面倒です (これはかなり頻繁に行われます)。
- すべてのエイリアスを含む 2 列の配列の束を各関数にハードコードします (数千行になる場合もあります)。もっとセクシーな方法があれば教えてください...
前もって感謝します!