• ベストアンサー

VBAが得意な方 助けてください Rangeについて

入門書を読みながらVBAを勉強しています。 3日以上繰り返して、ぜんぜんすすみません。困っています。お願いします。ご協力お願いします。 コードの内容は (1)マクロから別のエクセルファイルを開く (2)開いたファイルのシート1を選択 (3)Endプロパティを使ってRange("A65536")から上にジャンプするものです。 本に書いてあったコード通りうち実行しても4行目で以下のエラーメッセージが表示されます。 --出るエラー-- 実行時エラー'1004 'RangeクラスのActivateメソッドが失敗しました。 --使っているコード-- Application.DisplayAlerts = False Workbooks.Open Filename:= "C:\1班.xls" Worksheets("Sheet1").Select Range("A65536").End(xlUp).Activate 使っているものはExcel2000です。 ご協力お願いします。

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

Worksheets("Sheet1").Select Worksheets("Sheet1").Range("A65536").End(xlUp).Activate 上記のように、エラー行にも、Selectしたシート名を記述してみてください。 これで通れば、コードが記述されている場所の問題だとおもいます。 多分、シートモジュールに記述されているのではないでしょうか? 標準モジュールに記述されているなら、シート名を記述していないコードでも通るとおもいます。 標準モジュールとシートモジュールの違いは解りますか? モジュールとイベントについて http://www.sanynet.ne.jp/~awa/excelvba/kouza/chapt_01/sec08_01.html Excel(エクセル) VBA入門:VBE(Visual Basic Editor/VBエディタ)の使い方 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_vbe.html

bitter140307
質問者

お礼

ありがとうございます。シート名を追加したらうまくいきました!! ずっと考えていたことで解決して凄くうれしかったです。ありがとうございます。 記述する場所によって違うんですね。モジュールのによって違いがあるとは始めて知りました。教えていただいたサイトも勉強になりました。ありがとうございます。

その他の回答 (2)

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

私の場合下記でもうまく行きました。 Sub test02() 'Application.DisplayAlerts = False Set wb = Workbooks.Open(Filename:="01化.xls") Set Sh = wb.Worksheets("Sheet1") Sh.Range("A65536").End(xlUp).Activate End Sub でやってみてください。 ーー 質問のコードを考える上で、次の2つのブックが出てきます (1)モジュールを書いたブック・シート (2)開いたブックのシート これらを上記のように明示的にするほうが、今後色々なVBAコードで安全だと思います。 実行時エラー'1004  の後に、「Globalオブジェクト」と出ていると、これが原因でしょう。後に出ているエラーコメントも、もし在れば書いておくべきだ。 質問のエラー原因がこれかどうか、判りません。私も質問のコードでやってみると、エラーは出ませんでした。

bitter140307
質問者

お礼

アドバイスありがとうございます。 今後はシートの場所を書いてみます。

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.1

こんばんは bitter140307さんと同じExcel2000を使っていますが、 状況を再現できませんでした。 A列にどんな値が入っているのか教えてください。 また、4行目を以下のように変更すると、 メッセージが出ます。 そのメッセージがどのような物になるのかを教えてください。 MsgBox (Range("A65536").End(xlUp).Address)

bitter140307
質問者

お礼

わざわざ再現していただいてありがとうございます。 内容が不足していてすみません。