Excel VBAで非常に長いマクロを作成しています。名前付き範囲をマクロ内で指定する代わりに使用したいと思います。このマクロは長期間使用するためのものです。他のユーザーが範囲を変更するとどうなりますか?名前付き範囲でポジションを変更できるように、コードを調整するにはどうすればよいですか?名前付き範囲を変更する作業Excel VBA
0
A
答えて
2
I(個人的に)名前のついた範囲が嫌いです。特に、あるファイルから別のファイルにシート/範囲をコピーまたは貼り付けているときには、デッドリファレンスや名前付き範囲にコピーされたり、名前が変更されたり名前が変更されたりすることがあります。
これに対する私のソリューションは、次の2つのいずれかです。
(1)私は、特定の一部(あるいはモジュール)を捧げるVBAでのグローバル変数で私の範囲を宣言します。これは、各サブの冒頭にあるすべての変数のDim
と非常によく似ています。
'*********************************************************
'** Declaring all ranges and where to find which data
'*********************************************************
Dim rngNamedRangeName As Range
Sub SetupAllGlobalVariables()
Set rngNamedRangeName = ThisWorkbook.Worksheets(1).Range("A1:C10")
End Sub
'*********************************************************
'** After that all your normal subs follow and whenever
'** necessary you can call the above to get your ranges
'*********************************************************
Sub ExampleCodeToFormatYourRanges()
Call SetupAllGlobalVariables
With rngNamedRangeName
.Interior.ColorIndex = 36
End With
End Sub
(2)しかし、私の好み第2の解決策は、私は再び/リンク(私にとって重要です)すべての範囲を参照する別のvery hidden
シートを持つことです。だから、基本的に、私はこの別のシートにすべての "重要な"データを再度持っています。これはあなたの名前付き範囲になります。しかし、誰もこのシートに触れることは許されていません(その理由は、そのは非常にです)。範囲のいずれかがシフトまたは変更された場合、この隠しシート上の範囲を他のシートと再度リンクするのは簡単です。しかし、隠しシートでは、すべてのデータが同じ場所にあり、VBA内のすべての範囲(隠しシートのみ)をハードコードすることができます。
VBA以外のプログラマでも、通常、第2の方法でこのようなことを修正することができます。最初の方法では、おそらく常にそれを修正するためにVBAのスキルを持つ人が必要になります。
注:上記は唯一の解決策でも、最適な解決策でもありません。しかし、私はこれが大企業であっても有用な解決策であると確信しています。
関連する問題
- 1. Excel Interop - 名前付き範囲を変更する方法
- 2. VBA名前付き範囲オフセット
- 3. シートからシートに名前付き範囲のコピーをExcel
- 4. Excel名前付き範囲にある行を削除する
- 5. Excel - 名前付き範囲の行の逆順
- 6. Excel vbaグラフ作成、範囲を編集
- 7. 名前付き範囲内のループスルーセル
- 8. Excel vba - 範囲の要素
- 9. Excel - カラムを削除しても名前付きの範囲を維持する
- 10. ユーザーフォームの名前付き範囲(Excel)の変数が私にエラーを与えます
- 11. 名前が重複しているときにExcelワークブックで名前付き範囲を文字列で取得
- 12. Excel VBA:範囲内のオブジェクトを探す
- 13. Excel VBAの範囲から最初の列範囲を取得
- 14. Excel vba - 3つの範囲を比較
- 15. Excel VBAでファイルの名前を変更する
- 16. 名前付き範囲を動的に作成する方法は?
- 17. Excel VBA - 範囲の再初期化
- 18. Excel VBA - 動的フィルタ範囲の削除
- 19. Excelの空白セルを無視する名前指定範囲
- 20. 範囲名が名前マネージャーにない
- 21. 私が持っている名前付き範囲の名前のオブジェクト
- 22. 可変範囲のVBA sumif
- 23. 範囲にVBAポイント変数
- 24. このExcel VBAコードは機能しません。数式で名前付き範囲を更新する必要があります
- 25. セルの範囲をコピーしてWordに貼り付け、フォーマットする - Excel VBA
- 26. Excel VBA:XL名前付き範囲値をDOCブックマークにコピーしてからPDFにエクスポート
- 27. VBAでは、名前付き範囲のエントリをワークシート上の位置に基づいて列挙する方法
- 28. VBA Unfilter範囲
- 29. C#でExcelで高速範囲の名前を指定
- 30. [-1.0,1.0]の範囲の名前
お返事ありがとうございます。しかし、2番目のソリューションは、複数のユーザーの利便性やマクロとスプレッドシートの移植性を犠牲にする可能性があります。スプレッドシートを隠してしまえば、最終的にはメモリから外れてしまいます。 – Dombey
ある時点で、VBAにデータを見つける場所を教えなければならず、構造化データベースサーバー(SQL)に置かない限り、どこかで参照をハードコーディングする必要があります。だから、あなたは3つのオプションが与えられています。あなたはそれらを評価して、あなたが望むだけ多くのものを試すことができます。私は(個人的に)長い間このようなことをしており、上記の結論に達しました。しかし、セットアップ/パラメータが異なると、結論が異なる可能性があります。だから、楽しく遊んでみて、比較してみてください。おそらく誰かが実用的な別のソリューションを追加することもできます。 – Ralph