Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2013)
変数への代入の記述方法
投稿日時: 20/02/26 14:27:46
投稿者: tinanago

・FOM出版の「よくわかるExcel2016 VBAプログラミング実践」で学習をしていて、解説が無いためこちらで質問します。よろしくお願いします。
 
・エクセルのワークシートは以下の通りになっています
F10に「年」という文字列が入っている
F11に「2017」という数字が入っている
 
VBEは以下の通り記述されています
----
Dim Nen As Integer
 
<中略>
 
Nen = Range("年").Value
----
 
★質問内容
・変数に代入する際は、表の「項目名」を記述するのですか?

 
Nen = Range("F11").Value
ではなく
Nen = Range("").Value
にしている意図が分からず、腑に落ちなかったため質問しました。
 
(テキストの回答を見なければ
Nen = Range("F11").Value
と記述すると思っていた)
 
何卒よろしくお願い申し上げます。
 

回答
投稿日時: 20/02/26 14:51:05
投稿者: sk

引用:
Nen = Range("年").Value

引用:
・エクセルのワークシートは以下の通りになっています
F10に「年」という文字列が入っている
F11に「2017」という数字が入っている

F11 セルを参照先とする "年" という名前が定義されているからでは。

回答
投稿日時: 20/02/26 15:24:27
投稿者: WinArrow
投稿者のウェブサイトに移動

1.確認方法
 
名前ボックスには、カーソルがあるセル範囲が表示されます。
また、名前ボックスにセルアドレスを入力すると、そのアドレスにカーソルを移動することができます。
 
今回の場合、問題のセルが「F11」なので、
名前ボックスに「F11」と入力してみてください。
もちろん、F11にカーソルが移動するはずです。
その時、名前ボックスには、どのように表示されていますか?
おそらく、「年」と表示されているはず。
これは、F11に「年」という名前を定義しているからです。
 
2.セルに名前を定義するメリット
 
一例ですが
VBAで、
Range("F11").Value
と記述した場合、、その後何らの事情で、シートのレイアウトを変更すると
その時点で、F11には、別のデータが入っていることになります。
 
一方、名前で参照していた場合、
シートのレイアウトを変更しても、「年」が示す場所が変わるだけで、
VBAからは、「年」で参照できるので、
シートのレイアウト変更の影響は受けない
といえます。
 

投稿日時: 20/02/26 15:30:02
投稿者: tinanago

>sk様
 
ご回答ありがとうございます!
「名前の管理」を確認してみると、おっしゃる通りに設定されていました。
名前:年 
参照範囲:$F$11
 
テキスト付属のダウンロードしたファイルで、その旨記載もなかったためわかりませんでした。
 
非常に助かりました!
勉強になりました。どうもありがとうございましたm(__)m