• 締切済み

ブックを開き、ダイアログボックスに条件を入れるとその条件のシートが開く

sheet1~12に19年1月~12月の営業の訪問件数等が入力されています。 sheet13には、sheet1~12に入力されているデータをいっぺんに見れるように、社員番号を入力すると、その社員の月別の訪問件数等が見れるようにvlookupの式を入力しています。 sheet14には、sheet13のデータを棒グラフにて、表示しております。 このエクセルブックを開くと、「社員番号を入力してください。」とボックスが表示され、営業の社員番号を入力すると、指定の営業のsheet13の棒グラフが表示されるようにしたいのですが、どうしたらできますか?マクロは作成したことがありません。どなたかよろしくお願いいたします。

みんなの回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

>ボタンのマクロは、 > >Sub 社員番号() >  Dim codn As Integer >  codn = Application.InputBox("社員番号を入力してください。", Type:=1) > >End Sub > >です。社員番号は?と聞いてくるのですが、画面が指定した社員に切り替わりません・・ これでは、入力ボックスで入力し、変数 codn に格納した社員番号が宙に浮いています。 つまり Worksheets("Sheet13").Range("A1").Value = codn の部分が抜けています。 しかるべきシートの、しかるべきセルに書き込まねばExcelは仕事ができません。

ku-sama
質問者

お礼

なるほど・・ できました! コードを読めないなりにも、何が足りてないかぐらいはわかるようにしなくてはいけませんね。 ありがとうございまいた。 また何かありましたらよろしくお願いいたします!!

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

>社員番号を入力してください。」とボックスが表示され これさえもVBAを使わないと出せないでしょう。 >マクロは作成したことがありません。 こんな状態で質問してもね。 疑問点 >sheet13の棒グラフが表示されるようにしたいのですが Sheet14には全営業部員のグラフがあり、Sheet14を開くだけではダメなのですか。「sheet14が表示されるようにしたい」と違いがありますか。これだと社員番号の指定は知らないと思うが。 グラフには(1)新しいシート(Graph1などの別シート)(2)オブジェクト(データのあるシート上)とありますがどちらでやってますすか。 -- ブックをオープン時に部員名を指定し、対応するシートを開くのかな。 決まったシートの営業部員名をクリックすると、シートへハイパーリンクする方法もある。

ku-sama
質問者

補足

>Sheet14には全営業部員のグラフがあり、Sheet14を開くだけではダメなのですか。「sheet14が表示されるようにしたい」と違いがありますか。>これだと社員番号の指定は知らないと思うが。 sheet13で特定した社員の月別の一覧があり、そこを参照してsheet14にグラフが展開されております。 グラフは、グラフシートを使用しております。 >ブックをオープン時に部員名を指定し、対応するシートを開くのかな。 そうです!なんとか、社員番号を聞いてくる→その社員のグラフが表示される。まで行きました!!

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

エラー9はインデックスが正しくないというエラーで、指定されたシートが存在しないと出るようです。 Sheet13、Sheet14というシート名が質問者様の実際のシート名と正確に合致しているか確認してください。もし違う場合は、サンプルコードのシート名(Sheet13とSheet14)を正しいシート名に入れ替えれば動作するはずです。 >最後に保存したシートが既に表示されています 最初に表示したいシートを決めておけばよいのでは?(ダミーで表紙みたいなシートを作っておいて表示しても良いし、普通にSheet1が必ず表示されるのでも良い) 最初に表示したいシート名をStartとするなら、サンプルの3行目(Dim~とcodn=~の間)に以下の1行を入れれば、最初にStartシートが表示されるようになります。   Worksheets("Start").Activate (Startの部分を実際のシート名に置き換えてください)

ku-sama
質問者

お礼

大変助かりました!ありがとうございました。

ku-sama
質問者

補足

Application.Goto Reference:=Worksheets("Sheet14").Range("C10"), Scroll:=True の部分を消すと、エラーが無くなりました。 シート名は、正しく変更していたのですが。 .Range("C10")の部分はグラフシートなので指定できないので、ここは消していました。 グラフは、グラフシートを利用しているのでそこが問題だったのかな?と思っております。 しかし、なんとかできました! ここで新たな、思いが出てきてちょっとチャレンジしたのですが躓いてます・・・ グラフシート上に、マクロボタンをつけて、そのボタンを押すと社員番号を聞いてきて、社員番号を入れると、グラフが変わると。 ボタンのマクロは、 Sub 社員番号() Dim codn As Integer codn = Application.InputBox("社員番号を入力してください。", Type:=1) End Sub です。社員番号は?と聞いてくるのですが、画面が指定した社員に切り替わりません・・ どうしたらいいでしょうか?

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

>マクロは作成したことがありません。 これを切っ掛けにマクロを勉強してください。 該当ブックを開き、Alt+F11、とキー操作してください。 VBEが起動してコードウインドウが表示されます。 そこに、下記マクロをコピペし、ブックを保存終了してください。 再度、マクロを有効にして該当ブックを開くと入力ボックスが表示されます。 社員番号を入力して、「Ok」あるいは、Enterすれば Sheet13のセルA1に社員番号が入力され Sheet14のセルC10が左上角にスクロールした画面が表示されます。 これらのシート名とかセル番地は、実状に合わせて書き換えてください。 サンプルマクロです。エラー対策とかはしていません。 Sub Auto_open()   Dim codn As Integer   codn = Application.InputBox("社員番号を入力してください。", Type:=1)   Worksheets("Sheet13").Range("A1").Value = codn   Application.Goto Reference:=Worksheets("Sheet14").Range("C10"), Scroll:=True End Sub

ku-sama
質問者

補足

エクセルを起動して、社員番号の入力画面までは出るのですが、社員番号を入力すると、実行エラー9が出てきます。 ちなみに、グラフは、グラフシートににしています。これがエラーの元でしょうか? ↓のコードに変えても、実行エラー9が出てきます。 Application.Goto Reference:=Worksheets("グラフ").Activate あと、ブックを開き、社員番号を聞くメッセージボックスが出る時、後ろで最後に保存したシートが既に表示されています。メッセージボックスが開く際は、後ろのシートはまだ開いていない状態にはできないでしょうか? お手すきの際にご返信ください

関連するQ&A