プロが教えるわが家の防犯対策術!

こんばんは.
エクセルを使って備品の管理システムを構築したいと考えております.
マクロを使います.
VBAは初心者です.

・備品を20種類ほどに分類し,シートも同様に20作りました.
・ウィンドウを2つに分割し,上下に並べています.
・上ウィンドウの最初のシート(シート名:備品一覧)のB2セルにリストボックスを設け,そのリストで20種の備品の中から一つを選択できるようにしています.
・リストボックスの側にマクロ対応のボタンを設置しております

やりたいこととしては・・・
『上ウィンドウのリストボックスで備品を選択し,ボタンをクリックすることによって,下ウィンドウでその選択した備品名のシートに移動する』
です.

私が組んでみたマクロは下記です.
----------------
Sub 備品を選択  

  Dim sheetname As String

'リストボックスからシート名を取得する
sheetname = Range("B2").Value

'下ウィンドウをアクティブにしてシートを選択する
Windows(2).Activate
Worksheets("sheetname").Select

End Sub
------------------

エラーは,『Worksheets("sheetname").Select』のところで
【実行値エラー'9' インデックスが有効範囲にありません.】

参考書やグーグルで調べてもわかりませんでした.
ご教授いただければ幸いです.
よろしくお願い致します.

A 回答 (5件)

この辺の問題ではないでしょうか?



  ×Worksheets("sheetname").Select
  ○Worksheets(sheetname).Select

この回答への補足

>Apr2nd様
ご回答ありがとうございます.
まさしくその通りでした.
変数には””は必要ないんですね.
これからもっと勉強していきたいと思います.
どうもありがとうございました.

補足日時:2008/05/24 16:37
    • good
    • 1

すでに回答は出ていますが・・・



>エラーは,『Worksheets("sheetname").Select』のところで
「"」で「sheetname」を囲っているのが原因です。
変数の場合は、「"」を付けません。

Worksheets("sheetname").Select
上記は「sheetname」という名前のシートを選択する事になります。

Worksheets(sheetname).Select
上記は、Range("B2").Valueで取得したセルの文字のシートを選択する事になります。

この回答への補足

>kjkj_s様
ご回答ありがとうございます.
ご丁寧な説明ありがとうございました.

補足日時:2008/05/24 17:15
    • good
    • 0

基本的なことですが



sheetnameという名前のシートをセレクト
  Worksheets("sheetname").Select

sheetnameという変数に入っているシートをセレクト
  Worksheets(sheetname).Select

という違いがあります。

この回答への補足

>Dred様
ご回答ありがとうございます.
シート名には””が必要で,変数には””は必要ないんですね.
これからもっと勉強していきたいと思います.
ありがとうございました.

補足日時:2008/05/24 17:13
    • good
    • 0

直接の回答ではありませんが、シート一覧を表示そしてシートを選択するとそのシートに移動するツールバーをマクロで作成するのはいかがでしょうか?詳しくは↓をご覧ください。

サンプルファイルもあります。

エクセル技道場-マクロでツールバー作成
http://www2.odn.ne.jp/excel/waza/toolbar.html#SE …

↓は↑からの抜粋です。

============================================================
【エクセル技道場】No.005で、見出しスクロールボタンを右クリックでシート一覧が表示され、シート名をクリックすると当該シートがアクティブになることをご紹介いたしました。
ただし、15枚以上のシートがある場合には、見出しスクロールボタンを右クリックすると[シートの選択...]というメニューが出てくるので、それをクリックして[シートの選択]ダイアログボックスでアクティブにしたいシート名をクリックして、エンターを押す必要があります。
これが結構面倒くさいという人がいるので、シート一覧を表示するツールバーを作成するマクロを作成しました。
============================================================

参考URL:http://www2.odn.ne.jp/excel/waza/toolbar.html#SE …

この回答への補足

>izmlz様
ご回答ありがとうございます.
なるほど,そういった方法もあるのですね.

エクセル技道場は大変参考になりますね!
今後利用させていただきます.
どうもありがとうございました.

補足日時:2008/05/24 17:08
    • good
    • 0

何か難しいことをやっているようで良くわからんが


Sheet1のF1:G6に
E列    F列
工事用品Sheet2
ハウス用品 Sheet2
インテリア Sheet2
基礎用品 Sheet3
塗装用品 Sheet4
屋根用品 Sheet4
こういう対応表が要るのでしょう。質問には書いてないようだが。
Sheet1にコントロールツールボックスのリストボックスを1つ張り付け
プロパティで
Boundcolumn 2
ColumnCount 2
Linkedcell A1
listFillRange E1:F6
設定。
デザインモードでリストボックスをダブルクリック
Private Sub ListBox1_Click()ーEndSubが出てくるから
Private Sub ListBox1_Click()
sn = Range("a1")
Worksheets(sn).Select
End Sub
を作る。
デザインモードを脱する。
シートで「塗装用品」をクリックすると「Sheet4」のシートが
開く
===
参考になれば足しにしてください。
VBやフォームの上にコントロールを載せるのとちょっと違うから注意。

この回答への補足

>imogasi様
ご回答ありがとうございます.
私の質問の仕方が不十分でしたね.
大変申し訳ございませんでした.

imogasi様のご回答は後学のため参考にさせていただきます.
ありがとうございました.

補足日時:2008/05/24 16:40
    • good
    • 0

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

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


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