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

Sub macro手持親睦スポーツ()
'スポーツへ移動
Range("j136").Select
Call Application.Goto(Range("j136"), True)
End Sub

このように書くとセルが j136 に移動することが分かりました。

違うワークシートに移動する場合には、
どの様に書き足せばいいのか教えてください。

よろしくお願いします。
(マクロ記録で調べると、モジュールの中がぐちゃぐちゃになってしまします。
すみませんが、ご指導ください。

A 回答 (5件)

移動先のシート名が”移動先”である場合の例としては


Call Application.Goto(Sheets(”移動先”).Range("j136"), True)
とすればいけるでしょう。
老婆心
Range("j136").Select
は不要なはずです。
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速試してみました。
Call Application.Goto(Sheets("科目別").Range("j1"), True)
科目別がワークシート名です。
うまく動きません。
すみませんが、教えてください。

お礼日時:2024/02/20 09:48

是非基本的なことを今の機会に覚えてください。


コードは実行して初めて動くと多分お考えじゃないですか?
基本的にはいろんなことはイミディエイトウィンドウで
試したほうがいいです。

少なくともコードを登録して実行してエラーを見る。ではなく
イミディエイトウィンドウでチェックする。に切り替えることで
圧倒的に貴方が試す回数を増やせるんです。

具体的に言うと、その行をイミディエイトウィンドウに
コピペしてENTERを押すと実行されます。
つまりその場でいっぱい修正可能なんです。

例えば
Call Application.Goto(Sheets("科目別").Range("j1"), True)
この行は実行される時、されないときの条件は
エクセル側の状態に左右されるんですけど

>他のワークシートから、マクロボタンを使うとエラーになります。

この貴方の見解は恐らく間違いです。他のブックからならエラーなのではありませんか?
ボタンではそのボタンのあるシートからの実行になりますから
イミディエイトウィンドウで試せば、excel側の状況は自由に変えられるでしょ?
貴方が自分で確認するんです。

人に成功例だけ教えてもらっても
失敗と成功の療法を見るのとは全く違います。
あなたが上手くいくのと行かないのとの差を
体験で知るのが大事なんです。

その意味でイミディエイトウィンドウで実行するのが
大事で私はイミディエイトウィンドウで確認してから
コードウィンドウにコピペするという風にしています。

そして大事なのはオブジェクトを意識することです。

appplication.workbook.worksheet.range
EXCEL、ブック、シート、セル

左から右に向かって親子関係があることは判りますか?
エクセルの中で複数のブックがあり、その中に複数のシートがあり
さらにその中に複数のセルがあります。
つまりこれらには親子関係があるのです。

この時にどれかにアクセスするとそれには省略された
親オブジェクトがあります。例えばイミディエイトウィンドウに

? Sheets("科目別").Parent.Name
と打ってみて下さい。
省略された親オブジェクトの名前が確認できます。
ここまででご質問ありませんか?
    • good
    • 0
この回答へのお礼

大変ありがとうございます。
とても詳しくご説明いただきました。
ただ、残念ながら、今の私には理解できません。
イミディエイトウィンドウも色々調べましたが、?です。
しかし、無駄にすることなく勉強して参ります。

多くの専門家のアドバイスをいただき、改めて感謝申し上げます。
(普通に教わったら、かなりの指導料かと思います)
これからも、よろしくお願い申し上げます。
直近の課題は解決いたしました!Goodです。

お礼日時:2024/02/21 06:17

Application.Goto メソッド


1004エラー
対象シートが非表示
対象セルが保護シート上の選択不可セル 
などでしょうか

非表示シートを表示にする
If Sheets("科目別").Visible = False Then Sheets("科目別").Visible = True
    • good
    • 0
この回答へのお礼

ありがとうございました。
忙しいでしょうに、ご指導に感謝申し上げます。
最終的には、
Sub macro手持会議費()
'手持会議費へ移動

Sheets("科目別").Select
Call Application.Goto(Range("J1"), True)
End Sub
2行に分けて書くことでうまく行きました。

とても勉強になりました。
Qchanさん、ZINCERさん、また、何時か教えてください。

お礼日時:2024/02/20 16:56

マクロボタンは複数個あるようですが、標記のSubプロシージャーは1つですよね?


それは何処にありますか?
・ThisWorkbook
・Sheet1のようなシート
・Module1のような標準モジュール
私の動作環境ではどこにあっても問題無く動作しますので、場所の問題では無いようですが一応確認のため、Subプロシージャーの全文をコピーしてもらえませんか?

Sub ボタン1_Click()
Call Application.Goto(Sheets("科目別").Range("j1"), True)
End Sub

これだけですよね?
    • good
    • 0
この回答へのお礼

Sub macroJA雑費()
'JA雑費へ移動

Range("z183").Select
Call Application.Goto(Range("z183"), True)
End Sub
Sub macro手持会議費()
Call Application.Goto(Sheets("科目別").Range("i2"), True)
End Sub

お手数をお掛けしています。
subプロシージャ―の意味が良く分かりませんが、
上の写しは、全体の一部(マクロ2個分)です。他に、SUB。。。。ENDがいくつかあります。場所はMODULE7です。

ちなみに、MODULE8を作り、今問題の手持会議費()だけで、動かしてみましたが同じエラーでした。

甘えていますが、よろしくお願いいたします。

お礼日時:2024/02/20 12:30

No.1です。


>うまく動きません。
となっていますが、同じブック内にシート”科目別"があれば、問題ないはずなんですが、どのようなエラー(または現象)が起きますか?
    • good
    • 0
この回答へのお礼

すみません。
色々試しました。
現状は、同じワークシートでは上手く動きます。しかし、他のワークシートから、マクロボタンを使うとエラーになります。

実行時エラー1004
gotoメソッドは失敗しました。
applicaTIONオブジェクト。

このようなメッセージが出ます。
(予期していないワークシートにセルが移動してから、エラーが出ているみたいです。)

ご迷惑でしょが、ヒントだけでも頂ければと思います。
(なお、老婆心は、オッシャル通りでした。なくても動きました。
ありがとうございます。)

お礼日時:2024/02/20 10:31

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A