HOME
エクセルの学校  エクセルの学校  エクセルの学校

Yahoo Google
初めての方へ
ダウンロード
エクセルマイスター
過去ログ
検索 遊び マック コン
ライブラリ
よくある質問
エクセル質問ボード
全文検索
ExcelPedia
 

[[20090705153815]] 『シート間の移動マクロ』(jojo) >>BOT

[ 初めての方へ | 一覧(最新更新順) |

|
| 全文検索 | 過去ログ | HOME ]

 

『シート間の移動マクロ』(jojo)

 同じBOOK内のシート間の移動方法(VBA)について質問させて頂きます。

 ■今現在、一つのBOOKには数百のシートが登録されています。
 ■[data]というシートにはシート名が登録されています。内容は、

     J列はシート名 K列にはコード番号
  13行 (8015)豊田通商  8015
  14  (8053)住友商事  8053
  15  (8058)三菱商事  8058
  16  (8077)小林産業  8077
  17  (8202)ラオックス 8202
  以下、下に続く。

 今はJ列を利用してアクテイブセルという形で移動しています。

 Sub シート間の移動()
 Dim シート名 As String
 シート名 = ActiveCell.Value

     Sheets(シート名).Select
 End Sub
 -------------------

 これをInputBoxを使って
 -------------------
 Sub シート間の移動()
 Dim シート名 As String

 Msg = "移動したいシートNoを入力して下さい。"
    シート名 = InputBox(Msg, "No入力", "")

 <この場所に、InputBoxから取り込んだ番号と同じ番号をK列から探し、その左隣の内容をシート名として取り込みたいのですが、どのように書いたらいいのか教えて下さい。>

      Sheets(シート名).Select
 End Sub
 ------------------------------------

[excel2003][vista]


 こんにちは。かみちゃん です。

 > InputBoxから取り込んだ番号と同じ番号をK列から探し、その左隣の内容をシート名として取り込みたい

 以下のような感じでいかがですか?

 Sub シート間の移動2()
   Dim Msg As String
   Dim WS1 As Worksheet
 '  Dim シート名 As String
   Dim シート名 As Variant
   Dim m As Variant

   Msg = "移動したいシートNoを入力して下さい。"
   シート名 = Application.InputBox(Msg, "No入力", "")
   If VarType(シート名) = vbBoolean Then
     MsgBox "シート名の入力をキャンセルしました"
     Exit Sub
   End If

   Set WS1 = Nothing
   With Worksheets("data").Range("K:K")
     m = Application.Match(シート名, .Cells, 0)
     If IsNumeric(m) Then
       On Error Resume Next
       Set WS1 = Worksheets(.Cells(m, 0).Value)
       On Error GoTo 0
       If WS1 Is Nothing Then
         MsgBox "指定されたシートは存在しません [ " & シート名 & " ]"
         Exit Sub
       End If
     Else
       MsgBox "指定されたシート名はK列に存在しません [ " & シート名 & " ]"
       Exit Sub
     End If
   End With
   If Not WS1 Is Nothing Then
     WS1.Activate
   End If

 End Sub

 (かみちゃん)
 2009/07/05 16:27


 早々の回答、有難う御座います。
 マクロの実行結果ですが、K列のみ参照されるようで、実際にシート名が書かれているJ列の参照が出来ません。

 シート名は4桁の数字ではなく、左にある (8015)豊田通商 というようなシート名になります。

 宜しくお願い致します。 (jojo)

 こんにちは。かみちゃん です。

 > マクロの実行結果ですが、K列のみ参照されるようで、実際にシート名が書かれているJ列の参照が出来ません。

 何をもってそのように判断されていますか?
 ちなみにK列は、数字の文字列ですか?それとも数値ですか?

 「指定されたシート名はK列に存在しません」というメッセージが出るのであれば、InputBoxで入力した値が存在しないこと
 を意味します。
 メッセージの内容が悪いのでしょうか?
 「入力されたNoはK列に存在しません」としたほうがわかりやすいですか?

 そういうメッセージであるにもかかわらず、K列存在するのであれば、
   m = Application.Match(シート名, .Cells, 0)
 の部分を
   m = Application.Match(CLng(シート名), .Cells, 0)
 としてみてください。

 (かみちゃん)
 2009/07/05 17:04


 >   m = Application.Match(CLng(シート名), .Cells, 0)

 この変更だけで移動できるようになりました。
 今日は時間が無いので、明日にでもマクロの内容を勉強させて頂きます。
 有難う御座いました。
 (jojo)


コメント:

[ 一覧(最新更新順) |

]



キーボードヒント:[Home]または[Fn+Home]キーで一番上へ戻ります


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.