- Excel VBA 質問スレ Part34
617 :デフォルトの名無しさん[]:2014/09/18(木) 10:33:08.86 ID:NRNOSfJW - >>610
分からない。 当時発見したときは、「ほうほう、こんな方法があったのか!」とものすごく感動した思いがあるので やりかたが存在するのは確か。 オレはネット検索したりオブジェクトブラウザを見たりVBA本を数冊読んだりすることくらいしかしないから そのうちのどれかから見つけたのだと思うけど、いまだにどうやって見つけたかはさっぱりわからない。 もちろん夢とかじゃないだろう。
|
- Excel VBA 質問スレ Part34
619 :デフォルトの名無しさん[]:2014/09/18(木) 11:49:38.12 ID:NRNOSfJW - >>618
たしかWindowという文字列を使った覚えがある。 それかもしれない。 ところで、そのアクティプじゃないWindow(ブック?)の アクティプセル取得ってどうやるんだ?
|
- Excel VBA 質問スレ Part34
621 :デフォルトの名無しさん[]:2014/09/18(木) 11:54:24.19 ID:NRNOSfJW - >>620
それだ!
|
- Excel VBA 質問スレ Part34
623 :デフォルトの名無しさん[]:2014/09/18(木) 12:03:23.15 ID:NRNOSfJW - Bookを増やすとWindowも増える。
つまり Workbooks.Count = Windows.Count の関係にある。 しかし例えばCount=5のとき Workbooks(1)=Windows(5) Workbooks(2)=Windows(4) Workbooks(3)=Windows(3) Workbooks(4)=Windows(2) Workbooks(5)=Windows(1) という不思議な関係がある。 Windowsってなにものなんだ? 存在意義は? とりあえずこれですべてのBookの各ActiveSheetとActivecellのオブジェクトを、それをいちいちActivateせずに取得できるようになった。 Windows(n)にはActivesheetのプロパティもActiveCellのプロパティも存在するから。 BookについてはWindows(n).Parentで取得できるし。
|
- Excel VBA 質問スレ Part34
624 :デフォルトの名無しさん[]:2014/09/18(木) 12:09:23.49 ID:NRNOSfJW - >>622
ブックをたくさん開いて、いろんなシートでいろんなセルをActivateにしたあと、 次のコードを実行してごらん。 Sub ActiveObjectCheck() Dim w As Window Dim i As Integer i = 1 Cells(1, 1) = "Book" Cells(1, 2) = "ActiveSheet" Cells(1, 3) = "ActiveCell" Range(Cells(1, 1), Cells(1, 3)).Interior.Color = rgbGray For Each w In Windows i = i + 1 Cells(i, 1) = w.Parent.Name Cells(i, 2) = w.ActiveSheet.Name Cells(i, 3) = w.ActiveCell.Address(False, False) Next w End Sub
|