• ベストアンサー

プルダウンしたセルの内容と同じ名前のシートを表示する命令の記述は?

エクセルの入力規則で、Sheet1のセルB5に「A~J」の文字をプルダウンできるようにしました。この文字(例「A」)はワークシートの名に対応しています。 教えていただきたいことは以下のとおりです。  【プルダウンした文字(A)に対応するワークシート(A)を表示し、そのシートのセルA1を選択する命令を作成して、Sheet1のボタンに登録したいのです。この命令(BVAでしょうか)はどのように記述すればよろしいでしょうか?】

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 #1 の回答者です。 >今回の想定とは異なりますが、 >別の場面で利用させていただきたいと思います。 別の場面?「不可」という意味ですね。そういう婉曲的な表現って、意味がありません。 あくまでも、入力規則+フォームのコマンドボタンにつけたいなら、そう、はっきりとおっしゃっていただいたほうが早いと思います。それで、相手の人が、それだけの技術があって回答してくれるか、ゲタを預けたほうが、掲示板を利用する上でスムーズに行くと思います。掲示板の世界というのは、とても狭いですから、あまり、別の人が回答してくれると期待しないほうがよいです。マクロの常連さんなんて、#2で書いていただいた人とか、ほんの少数の人だけです。 私には、こうしたシートを替えるようなアクションといものは、ワークシートとは区分けされた部分での選択が必要と考えたからです。そういうこちらの理由は、分からないでしょうけれども。 以下のコードを、「標準モジュール」に貼り付けてください。 単に、フォームボタンを右クリックして、Button1_Click を登録してくださればよいですが、 「標準モジュール」上で、Sub SettingButton() にカーソルを置いて、[F5] を押してくだされば、「設定されました。」と出たら、設定されます。 '---------------------------------------------------------- '標準モジュール 'Option Explicit Sub Button1_Click()  '入力規則のある場所  Const ValidRng As String = "E1"  On Error Resume Next  With ActiveSheet  If .Range(ValidRng).Value <> "" Then    Application.Goto Worksheets(.Range(ValidRng).Value).Range("A1")    If Err.Number > 0 Then     MsgBox .Range(ValidRng).Value & ": 目的のシートが見当たりません。", 32    End If  End If  End With  On Error GoTo 0 End Sub '-------------------------------------------------------- 'フォームボタンの設定 'フォームボタンのあるシートをアクティブにしておいてください。 Sub SettingButton()   Dim num As Integer   ''マクロを取り付けるフォームボタンのインデックス   num = 1   On Error GoTo ErrHandler   With ActiveSheet     .Buttons(num).OnAction = ""     .Buttons(num).OnAction = "Button1_Click"     If InStr(.Buttons(num).OnAction, "Button1_Click") = 0 Then       Err.Raise 18     End If   End With ErrHandler:   If Err.Number > 0 Then     MsgBox "設定ができていません。", 48   Else     MsgBox "設定されました。"   End If End Sub '------------------------------------------------------------ なお、このマクロは、シートの行き先を間違えた場合は、Ctrl + Z で、戻ることが可能です。 もちろん、私なら、入力規則だけで、目的の場所にジャンプすることも可能です。

rv200zrv
質問者

お礼

ありがとうございました。 マクロの記述内容は全く分かりませんが、きちんと動きました。 ここの掲示板の使い方も教えていただきありがとうございました。

その他の回答 (2)

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

まだ質問者にとって敷居が高いのではないですか。 まずマクロの記録です。 Sheet1をアクチブにして、Sheet2のA2を選択すると Sub Macro1() Sheets("Sheet2").Select Range("A2").Select End Sub となります。 ーー この「Sheet2」のところをプルダウンで決めるわけです。 ユーザーフォームのコンボなどで選択する場合はコンボのイベントで捉えるのですが、入力規則の場合は、プルダウンメニューを選択した結果、セルの値の変化を捉えます。 プルダウンのオブジェクト名が捉えられないからです。 ーー Sheet1の A1セルに入力規則が設定されてある(内容はシート名の文字列)として Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Sheets(Target.Value).Activate Sheets(Target.Value).Range("A1").Select End If End Sub (1)イベントという考え方 (2)他シートのActivate、Selectの関係 こんな短いコードですが、色々な経験が詰まっています。 存在しない場合の手当てやChangeイベントの難しさ(Delした場合がどうだとか)がありますが正常限定で省略。 当面丸呑みで。

rv200zrv
質問者

補足

遅くなりましたが、ご回答ありがとうございます。 いただいた内容を標準モジュールに記述しましたが、フォームのボタンにマクロ登録できません。 「Microsoft Excel Objects」のシート1に記述しても同様です。 やはり、この操作の自動化は私にとって、かなり敷居が高いようです。 どのようにすればボタンに登録できるのでしょうか?。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 入力規則でもできますが、手続きとしては面倒です。 できれば、コントロールツールのコンボボックスに取り付けたほうが簡単ですね。 たとえば、コンボボックスで選んで、ダブル・クリックしてジャンプするというのはいかがですか? コントロールツールのコンボボックスを選び、それをワークシートにおきます。 右クリックして、[コードの表示]で、以下のコードを別に貼り付けます。 以下のコードでできます。 コードの表示でできた、Private Sub ComboBox1_Click は、削除してしまって結構です。 -------------------------------------------------------- 'シートモジュール、ダブルクリックイベント Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)   Dim ShName As String   ShName = ComboBox1.Value   Application.Goto Worksheets(ShName).Range("A1") End Sub Private Sub ComboBox1_GotFocus()  'シート名を、コンマ区切りで入れる   ComboBox1.List = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J") End Sub ----------------------------------------------------------- 貼り付けた後で、コントロールツールバーの青い三角定規がオンになっていますから、これをオフにすれば、すぐに使えるようになります。

rv200zrv
質問者

お礼

おそくなりましたが、ありがとうございました。 試したらきちんと動きました。 今回の想定とは異なりますが、 別の場面で利用させていただきたいと思います。

関連するQ&A

  • Excelで別シートのセルを選択したら、その隣のセルを表示させたいので

    Excelで別シートのセルを選択したら、その隣のセルを表示させたいのですが、 やり方がわかりません。 このようなリストを作成しました。 ----------------  果物  値段 りんご  50 バナナ  100 パイン  120 ---------------- 別シートのA1(他のセル)に「りんご」と入力したら A2に「50」とを表示させる方法を教えてください。 ちなみに別シートのA1には「果物」で入力規則してあります。 プルダウンで「りんご」を選択したら、 自動的に連動させてA2に「50」といれたいのです。 IFなど検索しましたが、該当するのはみつけられませんでした。 よろしくお願いします。

  • Excelでシートの違うリストからプルダウンで選択して、、

    Excelの入力規則を使って、セルの入力をプルダウンを使って、入力していました。そのとき、セルの入力値を他のシートに作って、選択していました。 今回の質問は、他のシート選択する値を増やしたいので、範囲を広げたいのですが、どうもやり方がわかりません。 入力規則を使って、他のシートのリストから選択するやり方は解っています。他のシートの値のあるセルの範囲を広げたいのですが、、 やり方を忘れてしまって、ややこしかったと、思いますが、詳しく教えていただける方、よろしくお願いします。

  • 【エクセル】シート1の複数セルをシート2に反映

    エクセルについて、教えて頂きたいです。 まず添付のエクセル画像を見て頂けますでしょうか。 <質問内容> まず添付画像は左側の「シート1」と、右側の「シート2」の2つから成っています。 シート1のA2セルは、ご覧の通り入力規則による「リスト」になっておりまして、 「A」「B」「C」の3つからプルダウン選択できるようになっています。 この状態でやりたいことがあるのですが、 例えばここで、 シート1のプルダウンで「B」を選択したとき、 シート2の「B」の行「B3、C3、D3セル」を自動的に参照して、 シート1の「B2、C2、D2セル」に「200 600 1,100」の数字が反映される方法を、 教えて頂けませんでしょうか。 ぜひとも宜しくお願いします(m_ _m)  ※ちなみに、シート名を「A」「B」「C」と記載してINDIRECT関数で反映させる方法は   存じておりますが、シートを1つに収めたいと思っております。

  • エクセル Sheet1 セルで入力したものをSheet2のセルへ

    エクセルのSheet1のセル(例えばB1)に入力した文字を、 Sheet2のセルの任意のセル(例えばA5)に自動で表示させるには どうすればいいのでしょうか?  Sheet2のA5のセルの中で、=Sheet1!B1 と入れても「0」に なるだけで・・・エクセルの何の機能を使えばいいのか全然分かりません。よろしくお願い致します。

  • 元のシートのプルダウンより選んで別シートへ自動反映

    昨日もご質問をさせていただいたのですが、当方の実力不足にて解決に至らず再度ご質問させて頂きます。 現在会社でエクセルの資料を作成しております。 プルダウンメニューを使用した資料です。 元のシートがありまして、そちらのプルダウンより選んだシート先のみに、 シートに入力した情報などを反映させたいのですが、 反映させたいセルに関数を入れたところ、プルダウンで選んでいないシートのセルにも 同じ答えが表示されてしまいます。 初心者のため、どこをどうしたら良いなどの回答を頂けますと大変嬉しく思います。 どうぞ宜しくお願いいたします。 念のため、昨日簡単に作った図も添付させていただきます。 例えば、注文者のセルより「◎◎」を選んだ後、備考のセルに文字を入力したとしまして、 その入力した文字を「◎◎」と言うシートに自動で反映させたいです。

  • エクセルのマクロで任意のセルに他のシートのセルの内容を入力したい。

    初心者のhaasan99と申します。 エクセルのマクロを利用して、任意のセルに特定のセルに入力している内容を入力したいのです。 任意のセルと特定のセル(たとえばA1)が同じシートの場合は、下記のマクロで実行できました。 ActiveCell.Value = "=$A$1" 特定のセルが他のワークシートの場合でもできる方法があるでしょうか。(たとえば、任意のセルがワークシート1で特定のセルがワークシート2) 参考書を調べていろいろやってみましたが、うまくいきませんでした。 どうぞよろしくお願いします。

  • セル番号を指定しそのセル内容を表示したい

    エクセルにて、セルA1番からA10番まで入力した文字を、セルB1番に表示させたいセルNOを入力しセルC1番に表示させたいのです。 =CELL("contents",セル番号)をうまく使ってできないものでしょうか。また、入力文字シート・表示させたいセルNO入力シート・表示させるシートが別々にできるなら、よりうれしいのですが。よろしくお願いします。

  • エクセルのセル中についてるプルダウンの内容を変えたい

    自分で作ったデータでないので、扱い方がよくわからず 困っています。 A-1のセルに文字が入力されています。 文字の内容は「ブランド」。 「ブランド」という文字の横にプルダウンの▼がついています。 それを触るといろいろな「ブランド」が表示されます。 その内容を削除したり、または追加したりしたいのですが やり方がわかりません。 超基本的なことで恐縮なのですが、お知恵を授けて 頂きたくお願いします。

  • EXcelでプルダウンをつくかって別シートに!

    Excelでプルダウンにして、特定の項目で別シートにリンクさせたい。 セル上にプルダウンの設定をして、項目を数種類入れます。 選択されたある項目で別シートに移ってそこで入力をしたい。 どのようにしたらいいのでしょうか?

  • エクセルでシート1のセルに入力すると別シートのセルに表示させるには

    依頼されて会員証をエクセル2003で作っている最中です。 SHEET1に下記の様に会員証のベースを作ました。 [●●●の会] 会員番号 [SHEET2の会員番号列] 住所 [SHEET2の住所列] 氏名 [SHEET2の氏名列] 電話番号 [SHEET2の電話番号列] [管理社名] SHEET2にまだ空欄ですが、会員番号・住所・氏名・電話番号のリスト表を作りました。 ここからが課題でして、SHEET2に会員番号、住所とセルに打ち込んでいくと SHEET1のそれぞれに対応したセルに表示させる為に SHEET1のセルに、[=Sheet2!A3]と打ち込めば、 SHEET2のA3のセルが対応されますが、 これではそのセルしか対応しません。 SHEET2の1行目に会員番号、住所から打ち込んだものは、 単純にSHEET1の表示させたいセルに[=SHEET2!○○]を打ち込めば、 それが対応されます。 ただSHEET2の2行目は空白ですので、新たに打ち込んで対応させようとしても出来ません。 毎度毎度SHEET1の表示させたセルに[=SHEET2!○○]をしていくのは大変です。 新規にリストを打ち込むたびにSHEET1の会員証に 表示させる方法はどういったものがあげられるのでしょうか? 或いは、SHEET1の会員証ベースに打ち込んでいくとSHEET2のリストに 自動的に登録される仕組みの方がやりやすいのでしょうか? 数式も教えていただければ大変有難いです。 アクセスの方がやりやすいかもしれませんが、 依頼した方のPCにはアクセスは入っていないですし、 私自身もアクセスはイマイチの部分があります。 エクセルのマクロなるものを使えません。 年始早々に使用したいとの事ですので、 なんとか仕上げてあげたいとは思います。 宜しくお願い致します。

専門家に質問してみよう