• ベストアンサー

ActiveWorkbookを変数に格納する場合

こんにちは、ActiveWorkbookを変数に格納する場合の処理について教えてください!下記の処理を実行したのですが、「型が一致しません」というエラーが出てうまくいきませんでした。 初歩的な質問で申し訳ないのですが、何が悪いのかご教示いただけると大変嬉しいです・・・!どうぞよろしくお願いいたしますm(_ _)m Dim AW As Object Set AW = Activeworkbook Workbooks(AW).WorkSheets("Sheet1").Select

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

AWはオブジェクトなのでそのまま AW.WorkSheets("Sheet1").Select としてください。

levitooicompass
質問者

お礼

ありがとうございます!変数のみでよかったのですね…!変数のみでも一度試したのですが、その時はWorkSheetsの部分が間違ってたみたいで、ご提示いただいたものでうまくいきました!!(^^)!

その他の回答 (5)

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.6

Dim AW As Object Set AW = ActiveWorkbook AW.Worksheets("Sheet1").Select で良いのでは?

levitooicompass
質問者

お礼

変数で指定する場合とワークブック名で指定する場合を正しく理解できていませんでした、ご回答いただきありがとうございました(*'▽')

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.5

No3です。 > AWはオブジェクトなのでそのまま 誤解をされそうな書き方(オブジェクトそのものと言ってることになりました)なので訂正します。 AWは「Setしたオブジェクトそのものとして扱える変数」なのでそのまま

levitooicompass
質問者

お礼

なるほど!了解いたしました、ありがとうございます(*'ω'*)4名同じコードをご回答いただいていてうまくいったので、どのかたをベストアンサーにするかすごく迷いましたが、ご回答順にさせていただこうと思うので、ベストアンサーとさせていただきます!

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

Set AW = Activeworkbook、はオブジェクトそのもので、ブックの名前文字列ではありません。そこを勘違いされている。 質問の路線で行くなら Sub test01() Dim bkn As String bkn = ActiveWorkbook.Name MsgBox bkn Workbooks(bkn).Worksheets("Sheet2").Range("A2") = "”東京" End Sub ーー WorkWbookの指定は (1)名前で (2)インデクス番号で (3)Activeなどで指定・ThisWorkbookで指定 (4)オブジェクトで (5)極く特殊な例で 上位オブジェクトで .Parent. Sub test02() Dim str As String bkn = ActiveWorkbook.Name MsgBox bkn Workbooks(bkn).Worksheets("Sheet4").Range("A2") = "東京" MsgBox ActiveSheet.Parent.Name End Sub 参考 https://www.239-programing.com/excel-vba/basic/basic084.html ーー 質問の路線では、 AW.WorkSheets("Sheet1").Select でよい。

levitooicompass
質問者

お礼

ブック名を入れるときはWorkbooks()で、変数の場合はそのままですね!ご回答いただいてありがとうございます('ω')参考資料もありがとうございます、マクロが組み込まれたブックがThisWorkbookで指定できるのは知らなかったです!まだまだ勉強不足ですね…。

  • kon555
  • ベストアンサー率51% (1842/3559)
回答No.2

よほど複雑な処理するとかでない限り、型の宣言はなしでいいと思いますよ。 あと「Workbooks(AW)」が違います。 Sub tes() Dim AW Set AW = ActiveWorkbook AW.Worksheets("Sheet1").Select End Sub でどうぞ

levitooicompass
質問者

お礼

バリアント型でもいけるんですね( ゜Д゜)確かにいちいち型を調べるの面倒なので宣言しなくていいなら楽です、ありがとうございます!

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

AWの変数の宣言がダメです。 Dim AW As Worksheet です。

levitooicompass
質問者

お礼

ありがとうございます!しかしご提示いただいたコードで試しましたがなぜかうまくいきませんでした( ;∀;)