[[20170114012728]] 『インデックスが有効範囲にありません』(vo) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『インデックスが有効範囲にありません』(vo)

 いつもすいません!!
 下記のように書くとSet spの所で題名の通りのエラーが出るのはなぜでしょう?

 Sub Macro1()

    Workbooks.Open Filename:="C:\Desktop\スポーツ.xlsx",    ReadOnly:=True
    Workbooks.Open Filename:="C:\Desktop\やさい.xlsx",     ReadOnly:=True

 Dim sp As Worksheet
 Dim bj As Worksheet

 Set sp = Worksheets("サッカー")
 Set bj = Worksheets("きゅうり")

End Sub

< 使用 Excel:unknown、使用 OS:unknown >


 >>Set sp = Worksheets("サッカー") 

 どのブックのシートかという指定がない場合、アクティブブックのシートとみなされます。
 このコード実行時点では アクティブブックは やさい.xlsx ですね。
 やさい.xlsxには サッカーというシートはないのでエラーになります。

 各ブックのブックオブジェクトを特段、変数に入れておく必要がなければ、以下のようなコードになります。
 個人的には、Sample3の記述が好みですね。

 Sub Sample1()
    Dim sp As Worksheet
    Dim bj As Worksheet

    Workbooks.Open Filename:="C:\Desktop\スポーツ.xlsx", ReadOnly:=True
    Set sp = Worksheets("サッカー")

    Workbooks.Open Filename:="C:\Desktop\やさい.xlsx", ReadOnly:=True
    Set bj = Worksheets("きゅうり")

 End Sub

 Sub Sample2()
    Dim sp As Worksheet
    Dim bj As Worksheet

    Workbooks.Open Filename:="C:\Desktop\スポーツ.xlsx", ReadOnly:=True
    Workbooks.Open Filename:="C:\Desktop\やさい.xlsx", ReadOnly:=True

    Set sp = Workbooks("スポーツ.xlsx").Worksheets("サッカー")
    Set bj = Workbooks("やさい.xlsx").Worksheets("きゅうり")

 End Sub

 Sub Sample3()
    Dim sp As Worksheet
    Dim bj As Worksheet

    Set sp = Workbooks.Open(Filename:="C:\Desktop\スポーツ.xlsx", ReadOnly:=True).Worksheets("サッカー")
    Set bj = Workbooks.Open(Filename:="C:\Desktop\やさい.xlsx", ReadOnly:=True).Worksheets("きゅうり")

 End Sub

(β) 2017/01/14(土) 07:22


βさん
ありがとうございます!
そうゆう理屈だったんですね!スッキリ!
sample3が1番わかりやすく見えるので使わせていただきます!
(vo) 2017/01/14(土) 09:00

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.