Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11244 / 13644 ツリー ←次へ | 前へ→

【17156】名前の挿入について hisao 04/8/24(火) 11:43 質問[未読]
【17159】Re:名前の挿入について ichinose 04/8/24(火) 12:09 発言[未読]
【17164】Re:名前の挿入について hisao 04/8/24(火) 13:24 お礼[未読]
【17165】Re:名前の挿入について IROC 04/8/24(火) 14:25 回答[未読]
【17215】Re:名前の挿入について ichinose 04/8/24(火) 20:53 発言[未読]
【17233】Re:名前の挿入について hisao 04/8/25(水) 9:55 お礼[未読]
【17242】Re:名前の挿入について ichinose 04/8/25(水) 12:19 発言[未読]
【17244】Re:名前の挿入について hisao 04/8/25(水) 12:32 お礼[未読]

【17156】名前の挿入について
質問  hisao E-MAIL  - 04/8/24(火) 11:43 -

引用なし
パスワード
   いつもお世話になります。
VBAに限らないことですが、名前を定義する際、
1枚のシートのみに有効な場合と、ブック全体に有効な場合がある様です。
1枚のシートのみに有効な場合は定義したformboxを見ると右側にシート名が
記入されています。何かのはずみでこうなるのですが、どうすればシートのみ或いはブック全体に有効なように名前を付けることが出来るのか、手動の場合及びマクロの場合につきお教え頂けないでしょうか。

【17159】Re:名前の挿入について
発言  ichinose  - 04/8/24(火) 12:09 -

引用なし
パスワード
   ▼hisao さん:
こんにちは。

>いつもお世話になります。
>VBAに限らないことですが、名前を定義する際、
>1枚のシートのみに有効な場合と、ブック全体に有効な場合がある様です。
>1枚のシートのみに有効な場合は定義したformboxを見ると右側にシート名が
>記入されています。何かのはずみでこうなるのですが、どうすればシートのみ或いはブック全体に有効なように名前を付けることが出来るのか、手動の場合及びマクロの場合につきお教え頂けないでしょうか。

このブック全体の意味がちょっとよくわかりませんが・・・、想像です。

例えば、
Sheet1、Sheet2というシート名を持つシートがあった場合、
名前の定義でセルA1を「aaa」で定義したとします。
Sheet1のどこかのセルで「=aaa」とした場合は、Sheet1のセルA1が表示され、
Sheet2のどこかのセルで「=aaa」とした場合は、Sheet2のセルA1が表示される

というように設定するには? でよろしいですか?

この場合、名前の定義では、「=!$a$1」と入力して下さい。
解釈違ってたかも・・・。

【17164】Re:名前の挿入について
お礼  hisao E-MAIL  - 04/8/24(火) 13:24 -

引用なし
パスワード
   ▼ichinose さん:
有り難う御座いました。大いに助かりました。この場合名前boxには表示されないのですね。
ところで この様な質問をさせて頂いたのはマクロでAシートを選択した状態でsheets("B")のrange("A1")の名前を定義したところ、他のシート(BとかCシート)の名前boxには入って居らずBやCシートの選択状態では名前が有効にならず困ったことがありました。名前の変数宣言の仕方が悪かったのでしょうか。
名前はobject変数でしょうかvaliantでしょうか。

>▼hisao さん:
>こんにちは。
>
>>いつもお世話になります。
>>VBAに限らないことですが、名前を定義する際、
>>1枚のシートのみに有効な場合と、ブック全体に有効な場合がある様です。
>>1枚のシートのみに有効な場合は定義したformboxを見ると右側にシート名が
>>記入されています。何かのはずみでこうなるのですが、どうすればシートのみ或いはブック全体に有効なように名前を付けることが出来るのか、手動の場合及びマクロの場合につきお教え頂けないでしょうか。
>
>このブック全体の意味がちょっとよくわかりませんが・・・、想像です。
>
>例えば、
>Sheet1、Sheet2というシート名を持つシートがあった場合、
>名前の定義でセルA1を「aaa」で定義したとします。
>Sheet1のどこかのセルで「=aaa」とした場合は、Sheet1のセルA1が表示され、
>Sheet2のどこかのセルで「=aaa」とした場合は、Sheet2のセルA1が表示される
>
>というように設定するには? でよろしいですか?
>
>この場合、名前の定義では、「=!$a$1」と入力して下さい。
>解釈違ってたかも・・・。

【17165】Re:名前の挿入について
回答  IROC  - 04/8/24(火) 14:25 -

引用なし
パスワード
   >名前はobject変数でしょうかvaliantでしょうか。

Name オブジェクト の Name プロパティ です。

【17215】Re:名前の挿入について
発言  ichinose  - 04/8/24(火) 20:53 -

引用なし
パスワード
   ▼hisao さん:
>有り難う御座いました。大いに助かりました。この場合名前boxには表示されないのですね。
やっぱり、私の解釈が違ってたみたいです。

>ところで この様な質問をさせて頂いたのはマクロでAシートを選択した状態でsheets("B")のrange("A1")の名前を定義したところ、他のシート(BとかCシート)の名前boxには入って居らずBやCシートの選択状態では名前が有効にならず困ったことがありました。名前の変数宣言の仕方が悪かったのでしょうか。

まず、VBAでの記述です。
新規ブックに以下のコードをコピーして実行してみて下さい。
'=============================================================
Sub test()
  ActiveSheet.Names.Add "aaa", "=$a$1"
  ThisWorkbook.Names.Add "bbb", "=$b$1"
End Sub

実行後、「挿入」---「名前」---「定義」で作成された名前を確認して下さい。


次に特定シートでのみ使用可能(本当は、別シートでも参照できます)な名前定義
の手動操作です。

再度、新規ブックを作成して下さい。

1 Sheet1のセルB10を選択して下さい。この状態で
 、「挿入」---「名前」---「定義」をクリックして「名前の定義」ダイアログを表示
 させます。

2 参照範囲は、Sheet1!$B$10となっていますよね?

3 名前には、「Sheet1!spnm」と指定して追加ボタンをクリックして下さい。

これで登録完了です。

Sheet2をアクティブにして下さい。

適当なセルに「=sheet1!spnm」と入力して下さい。
ちゃんとspnmの内容は、表示されますよね?

こういうことだったのではないですか?


>名前はobject変数でしょうかvaliantでしょうか。

【17233】Re:名前の挿入について
お礼  hisao E-MAIL  - 04/8/25(水) 9:55 -

引用なし
パスワード
   ▼ichinose さん:
ichinoseさんIROCさん、いつも有り難う御座います。
お助け神さんのような気がします。
納得いきました。問題は解決したのですが
ついでと言っては何ですが、又必要ないことかも知れませんが
手動で シート2の名前定義をシート1のみ有効にさせる方法は有るのでしょうか?つまりマクロで言えば  ActiveSheet.Names.Add "aaa", "=sheet2!$a$1"
それと 名前定義ダイアログボックスで追加とOK釦はどう異なるのでしょうか?
素人のつまらない質問に付き合わせてすみません。

>▼hisao さん:
>>有り難う御座いました。大いに助かりました。この場合名前boxには表示されないのですね。
>やっぱり、私の解釈が違ってたみたいです。
>
>>ところで この様な質問をさせて頂いたのはマクロでAシートを選択した状態でsheets("B")のrange("A1")の名前を定義したところ、他のシート(BとかCシート)の名前boxには入って居らずBやCシートの選択状態では名前が有効にならず困ったことがありました。名前の変数宣言の仕方が悪かったのでしょうか。
>
>まず、VBAでの記述です。
>新規ブックに以下のコードをコピーして実行してみて下さい。
>'=============================================================
>Sub test()
>  ActiveSheet.Names.Add "aaa", "=$a$1"
>  ThisWorkbook.Names.Add "bbb", "=$b$1"
>End Sub
>
>実行後、「挿入」---「名前」---「定義」で作成された名前を確認して下さい。
>
>
>次に特定シートでのみ使用可能(本当は、別シートでも参照できます)な名前定義
>の手動操作です。
>
>再度、新規ブックを作成して下さい。
>
>1 Sheet1のセルB10を選択して下さい。この状態で
> 、「挿入」---「名前」---「定義」をクリックして「名前の定義」ダイアログを表示
> させます。
>
>2 参照範囲は、Sheet1!$B$10となっていますよね?
>
>3 名前には、「Sheet1!spnm」と指定して追加ボタンをクリックして下さい。
>
>これで登録完了です。
>
>Sheet2をアクティブにして下さい。
>
>適当なセルに「=sheet1!spnm」と入力して下さい。
>ちゃんとspnmの内容は、表示されますよね?
>
>こういうことだったのではないですか?
>
>
>>名前はobject変数でしょうかvaliantでしょうか。

【17242】Re:名前の挿入について
発言  ichinose  - 04/8/25(水) 12:19 -

引用なし
パスワード
   ▼hisao さん:

こんにちは。

>納得いきました。問題は解決したのですが
>ついでと言っては何ですが、又必要ないことかも知れませんが
>手動で シート2の名前定義をシート1のみ有効にさせる方法は有るのでしょうか?つまりマクロで言えば  ActiveSheet.Names.Add "aaa", "=sheet2!$a$1"
ActiveSheet.Names.Add "aaa", "=indirect(""sheet2!$a$1"")"

こんなふうにする方法がありますが・・・。
つまり、ワークシート関数が使えると言うことがわかれば
工夫が可能かと思います。

>それと 名前定義ダイアログボックスで追加とOK釦はどう異なるのでしょうか?
確認したわけではありませんが、たぶん、OKは、ダイアログを閉じてしまいますよね。

続けていくつもの名前を定義する場合は、追加ボタンを押す、ということではないでしようか?

【17244】Re:名前の挿入について
お礼  hisao E-MAIL  - 04/8/25(水) 12:32 -

引用なし
パスワード
   ▼ichinose さん:
有り難う御座いました

>▼hisao さん:
>
>こんにちは。
>
>>納得いきました。問題は解決したのですが
>>ついでと言っては何ですが、又必要ないことかも知れませんが
>>手動で シート2の名前定義をシート1のみ有効にさせる方法は有るのでしょうか?つまりマクロで言えば  ActiveSheet.Names.Add "aaa", "=sheet2!$a$1"
>ActiveSheet.Names.Add "aaa", "=indirect(""sheet2!$a$1"")"
>
>こんなふうにする方法がありますが・・・。
>つまり、ワークシート関数が使えると言うことがわかれば
>工夫が可能かと思います。
>
>>それと 名前定義ダイアログボックスで追加とOK釦はどう異なるのでしょうか?
>確認したわけではありませんが、たぶん、OKは、ダイアログを閉じてしまいますよね。
>
>続けていくつもの名前を定義する場合は、追加ボタンを押す、ということではないでしようか?

11244 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free