• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAの書き方を教えてください 2)

VBAの書き方を教えてください

このQ&Aのポイント
  • 以前にこちらで質問をさせていただき、VBAを追記する方法について教えていただきましたが、移動したシートをアクティブにする方法がわかりません。
  • 移動したシートのA1000をアクティブにするために、どこに何を入れればよいのでしょうか?
  • よろしくお願いします。

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

  • ベストアンサー
回答No.3

もう、おおよその正解はついているので、あえて回答する必要もないとは思いますが、 あえて、元のコードを直すなら、 '// Private Sub CommandButton1_Click()  Dim i As Long  Dim myFlg As Boolean  For i = 1 To Worksheets.Count   If Worksheets(i).Name = Range("A1").Value Then '* 加筆    myFlg = True    Exit For   End If  Next i  If myFlg = True Then   With Worksheets(i)    .Activate    .Range("A1000").Select '* 加筆   End With  Else   MsgBox "該当シートなし"  End If End Sub '// 確かに、ループよりは、Goto のほうがよいでしょうが、私なら、回答として、このようなコードを書きます。ただし、実務上は、私は、違うコードを書きます。あまり、Error トラップを置き過ぎると、コードが読みにくくなりますから、実務では、Errorが分かる範囲の場合は、トラップは置かない場合が多いです。 '// Private Sub CommandButton1_Click()  Dim wsName As String  If Range("A1").Value <> "" Then   wsName = Range("A1").Value   On Error Resume Next   Application.Goto Worksheets(wsName).Range("A1000"), True  End If  If Err.Number <> 0 Then    MsgBox Err.Description, vbCritical    wsName = "" 'もしも、この後のコード加える場合は、これを書いておいたほうが無難です。  End If End Sub '//

t-seisan1
質問者

お礼

windFallerさん。 ありがとうございます。 大量に元のコードを書き込んでいた物ですから、修正するのが大変なので元の教えて頂いたのをベースにしたかったのです。 せっかく教えて頂いたのですが、違うコードは自分には理解しきれませんでしたので、上記を使う事にしました。 また何かあればよろしくお願いいたします。

その他の回答 (3)

回答No.4

AN1です。訂正します。 原因が分かりました。アクティブでないシートのセルを直接selectやactivate出来ません。 なので一旦シートを選択してからセルをアクティブにします。 If myFlg = True Then Worksheets(k).select Range("A1000").Activate Else これでOKです。間違ってたらごめんなさい。

t-seisan1
質問者

お礼

over the galaxyさん。 ありがとうございます。 すみません、自分もシートを選択してからセルを指定する方法を考えていたのですが、うまくいかなかったので、こちらに質問させていただいていました。 やはり、教えて頂いたのではアクティブシートは、移動先ではなく元のシートになってしましました。 また、何かあればよろしくお願いいたします。

回答No.2

If myFlg = True Then Worksheets(k).Range("A1000").Activate Else で出来ると思います。

t-seisan1
質問者

補足

おはようございます。 実行時エラー1004 RangeクラスのActivateが失敗しました。 が発生してしまいます。 何とかなりますでしょうか?

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

private sub CommandButton1_Click()  on error resume next  application.goto worksheets(range("A1").value).range("A1000"), true end sub でいいです。

t-seisan1
質問者

お礼

keithinさん。 早急な回答ありがとうございました。 教えて頂いた内容で実行できたのですが、使う者が全くの素人なのでどうしてもエラー文面が必要でした。 また、何かあればよろしくお願いいたします。

関連するQ&A