プロが教える店舗&オフィスのセキュリティ対策術

入門書を読みながら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です。
ご協力お願いします。

A 回答 (3件)

Worksheets("Sheet1").Select


Worksheets("Sheet1").Range("A65536").End(xlUp).Activate

上記のように、エラー行にも、Selectしたシート名を記述してみてください。
これで通れば、コードが記述されている場所の問題だとおもいます。
多分、シートモジュールに記述されているのではないでしょうか?
標準モジュールに記述されているなら、シート名を記述していないコードでも通るとおもいます。
標準モジュールとシートモジュールの違いは解りますか?

モジュールとイベントについて
http://www.sanynet.ne.jp/~awa/excelvba/kouza/cha …
Excel(エクセル) VBA入門:VBE(Visual Basic Editor/VBエディタ)の使い方
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/26 09:58

私の場合下記でもうまく行きました。


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オブジェクト」と出ていると、これが原因でしょう。後に出ているエラーコメントも、もし在れば書いておくべきだ。
質問のエラー原因がこれかどうか、判りません。私も質問のコードでやってみると、エラーは出ませんでした。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/26 10:00

こんばんは



bitter140307さんと同じExcel2000を使っていますが、
状況を再現できませんでした。

A列にどんな値が入っているのか教えてください。

また、4行目を以下のように変更すると、
メッセージが出ます。
そのメッセージがどのような物になるのかを教えてください。
MsgBox (Range("A65536").End(xlUp).Address)
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/26 10:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!