Excel VBA質問箱 IV

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

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


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

【63715】非アクティブのブック名の取得方法を教えてください たつや 09/12/2(水) 21:11 質問[未読]
【63716】Re:非アクティブのブック名の取得方法を教... よろずや 09/12/2(水) 22:09 回答[未読]
【63717】Re:非アクティブのブック名の取得方法を教... かみちゃん 09/12/2(水) 22:25 発言[未読]
【63719】Re:非アクティブのブック名の取得方法を教... たつや 09/12/3(木) 7:57 お礼[未読]

【63715】非アクティブのブック名の取得方法を教え...
質問  たつや  - 09/12/2(水) 21:11 -

引用なし
パスワード
   はじめまして。

VBA暦1ヶ月ほどの初心者です。過去記事を「ブック名」「取得」で検索しましたが見当たらなかったため、よろしくお願いいたします。

マクロの実行中に、InputBoxにより範囲を選択させた場合に、後で使うために選択範囲が含まれているブック名およびシート名を取得したいと考えています。
ここでは、InputBoxの実行中に、ユーザーがウインドウメニューから他のブックに切り替えて、その先で範囲選択を行うケースを想定しています。

ActiveWorkbookプロパティを試してはみたのですが、マクロの実行時点でアクティブであったブック名が記録されてしまいました。

現在は、Address(external:=True)プロパティを用いて、文字列を取得し、
"[", "]", "!" との位置関係からブック名およびシート名を切り分けるという荒業で一応動いていますが、もっとスマートな方法があるのではと思います。

どうか、ご教授のほどよろしくお願い申し上げます。

【63716】Re:非アクティブのブック名の取得方法を...
回答  よろずや  - 09/12/2(水) 22:09 -

引用なし
パスワード
   rng :Inputboxで得られたrangeオブジェクトとすると、
rng.Parent:ワークシート
rng.Parent.Parent:ワークブック

【63717】Re:非アクティブのブック名の取得方法を...
発言  かみちゃん  - 09/12/2(水) 22:25 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>マクロの実行中に、InputBoxにより範囲を選択させた場合に、後で使うために選択範囲が含まれているブック名およびシート名を取得したいと考えています。
>ここでは、InputBoxの実行中に、ユーザーがウインドウメニューから他のブックに切り替えて、その先で範囲選択を行うケースを想定しています。

すでに、よろずやさんからコメントがついていますが、
以下のような感じでできると思います。

Sub Sample()
 Dim rng As Range
 Set rng = Application.InputBox("", , , , , , , 8)
 MsgBox "選択された範囲は、" & vbCrLf & rng.Address(, , , True) & vbCrLf & _
     "ブック名は、" & rng.Parent.Parent.Name & vbCrLf & _
     "シート名は、" & rng.Parent.Name
End Sub

【63719】Re:非アクティブのブック名の取得方法を...
お礼  たつや  - 09/12/3(木) 7:57 -

引用なし
パスワード
   よろずやさん かみちゃんさん

こんなに早くご回答いただきありがとうございます(^.^)

Parentプロパティという便利なものがあるんですね。
通常はActiveWorkbookなどで足りるのか、説明記事等ではあまり取り上げられないようですが。それとも当たり前すぎるのかな?

早速ためしてみて、うまくいきました。感謝。

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