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名前付き範囲変更イベント
- 2. Excel Interop - 名前付き範囲を変更する方法
- 3. VBA名前付き範囲エラー
- 4. VBA名前付き範囲オフセット
- 5. VBA:ダイナミック名前付き範囲
- 6. Excel vbaは、ブックレベルの名前付き範囲を可変に設定します。
- 7. VBA Worksheet Sub別のワークシートで名前付き範囲を作成
- 8. Range関数で名前付き範囲を参照する(Excel - VBA)
- 9. 名前付き範囲を変更して条件式を適用するExcel VBAマクロ
- 10. は、複数の名前付き範囲をループと類似した名前付き範囲VBA
- 11. Excel VBA:複数の名前付き範囲のループをコピーします。
- 12. シートからシートに名前付き範囲のコピーをExcel
- 13. VBA 100k +名前付き範囲を削除する
- 14. Excel名前付き範囲にある行を削除する
- 15. Excel VBA、名前付き範囲内の特定のセルの値を検索
- 16. 名前付き範囲の重複/数式の変更
- 17. vbaはダイナミックな名前付き範囲を設定します
- 18. Excel VBA AVERAGE(可変範囲)
- 19. 名前付きIIFE名の範囲
- 20. #VALUE!名前付き範囲でVBA機能上の誤り、VLOOKUP
- 21. Powershell Excel - 名前付き範囲からのコピー
- 22. Excel - 名前付き範囲の行の逆順
- 23. 名前付き範囲のセル/範囲参照を取得
- 24. xlrd名前付き範囲の例?
- 25. 名前付き範囲の削除
- 26. 名前付き範囲内のループスルーセル
- 27. excel vbaの範囲の値を変更する方法
- 28. Excel VBAのコピーで、各名前付き範囲を単語に貼り付けます。
- 29. VBA名前付き範囲はシート名とセルアドレスとして取得します
- 30. VBA Excelバリデーションリストを変数範囲
お返事ありがとうございます。しかし、2番目のソリューションは、複数のユーザーの利便性やマクロとスプレッドシートの移植性を犠牲にする可能性があります。スプレッドシートを隠してしまえば、最終的にはメモリから外れてしまいます。 – Dombey
ある時点で、VBAにデータを見つける場所を教えなければならず、構造化データベースサーバー(SQL)に置かない限り、どこかで参照をハードコーディングする必要があります。だから、あなたは3つのオプションが与えられています。あなたはそれらを評価して、あなたが望むだけ多くのものを試すことができます。私は(個人的に)長い間このようなことをしており、上記の結論に達しました。しかし、セットアップ/パラメータが異なると、結論が異なる可能性があります。だから、楽しく遊んでみて、比較してみてください。おそらく誰かが実用的な別のソリューションを追加することもできます。 – Ralph