- ベストアンサー
エクセル VBA
目次 → 情報(非表示中)→目次ボタン → 目次に戻る をVBAのコード表示を教えて頂きできたのですが 開いた情報 → 目次に戻る際に情報の項目が自動的に非表示にできません VBA初心者なのでコードがわからないです ご迷惑ですが やりかたを教えて頂きたいのですが 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#4です。 無駄な気もするが、興味のある他の人も見ておれば役に立つかもと思って、上げてみる。 ーー やり方として小生は、3つを思いついた。 (1)HyperLink利用法ー> 初めの質問には、この方法を指定あり。すでに締め切り済み。 (2)コマンドボタン利用法 (3)シートのセル選択イベント利用法。 ーー (3)でやってみる。VBAコードが一番少なそうなので。 ただ応用したり不都合が出たときの対処法はVBAの経験が必要で、 誰でもできるわけではない。 ーー 例として、シートを4つ用意する。 1つは目次シートです。 他シートは、目次シートで選んだ項目の詳細データのある シートで、複数あるシートです。 ーー 「目」シートのセルの値は、あらかじめ 目次 <-B1セル 東京 <-A3セル 神奈川 <ーA5セル 千葉 <-A7セル にします。「ボタン」風らしく、セルの塗りつぶし色を付けておくのも良いと思う。 ーー シートの名前を、「シート名」の変更操作で、ここでは東京、神奈川、千葉にします。 (VBAでもできなスが) 各シートのA1セルには「メニューへ戻る」とセル野値を入れます。 ボタン替わりです。 -- そして目次シート以外を非表示にします。(VBAでも、1回の手操作でもできます。 ーー VBA関連 (1)Sheet1(目次)のセル選択変更イベントに Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$3" Or Target.Address = "$A$5" Or Target.Address = "$A$7" Then Worksheets(Target.Value).Visible = True Worksheets(Target.Value).Select Else End If End Sub (2)Sheet2(東京)のセル選択変更イベントに Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$1" Then ActiveSheet.Visible =False Worksheets("目次").Activate End If End Sub (3)Sheet3(神奈川)のセル選択変更イベントに Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$1" Then ActiveSheet.Visible = False Worksheets("目次").Activate End If End Sub (4)Sheet3(千葉)のセル選択変更イベントに (3)と同様なのでここへ記述略。 同じコードをコピペすること。 == このコードの欠点は、上記の東京などの選択肢が増えると、同じ(似た)コードを その数だけ作っておかないといけない。 これはHyperLink法でも、コマンドボタン法でも同じ。 これを1か所のコードですます方法はあるが、「クラス」というものなどの上級の 知識が要るので難しい。シコシコとシートの数だけコピー貼り付けをするほかない。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
最近3件目で、同じらしいこういう質問が出ているが、情報教科の宿題で出たものか。? 知りたかったら、Googleで「エクセルVBA 目次」「エクセルVBA 目次 OKWAVE」で照会してみれば。 >目次 → 情報(非表示中)→目次ボタン → 目次に戻る これだけでは質問内容を説明不足だ。 エクセルの質問でありながら ・ブック ・シート ・セル ・添付された部品(ボタンなど) のどれかをはっきり認識していないのだろう、説明できておらず、エクセル初心者の質問のようだ。VBAなど初めて要求されたのだろう。 想像するとSheet1に目次という、ある列のセルに、目次的な()文字列が入っている。 あるいは、目次ボタンが複数あって、その各ボタンのCaptionは、目次らしい文字が設定されている。 情報と言っているのは、エクセル的にはシートで、Sheet2、Sheet3、Sheet44、・・・は非表示になっている。 Sheet1の目次ボタンのどれかをクリックすると、その決められたシートの非表示を解除しそのシートを画面に出す。 各シートには「目次へ戻る」ボタンがあり、それをクリックすると。目次シートを開く。 そういうことか。 自分でできないなら、出題した先生の説明を後日聞けばよい。 もしコピペして出来ましたと出せば、先生の、生徒の理解殿把握を誤解させる。 情報コースなのかもしれないが、先生も(説明済みなのかどうかも判らないが)出題の出し方を工夫し考慮すべきだとおもう。 そうでなくても、情報以外の他の分野でも、WEB記事のコピペ回答が多いと聞く、時代らしいから。 こういう、「クリック」したときに、こうする、というトリガ=イベントという仕組みのプログラムになり、初心者より、相当上の課題だ。 それにシートを非表示にしてみたり、意図不明の複雑な仕組みにしている。学習問題のなせるわざかな。 あえて、とりあえず、コードはここに書かない。
- skp026
- ベストアンサー率45% (1010/2238)
表示と非表示を切り替えている部分だけを、 別のボタンイベントにコピペするなどして、 記述の確認をするのはいかがでしょうか。 表示と非表示にしている対象が不明ですが、 以下に参考になりそうなものをご案内します。 行か列の場合。 HiddenプロパティにTrueを設定することで、行または列を非表示にします。 ワークブックの場合。 Windows("ワークブック名").Visible = True/False シートの場合。 Worksheets("Sheet2").Visible = False Googleで検索するとしたら、 Excel VBA 非表示 シート Excel VBA 非表示 ブック Excel VBA 非表示 列 という感じです。 既にご存じでしたらごめんなさい。
- Meegeren
- ベストアンサー率44% (204/459)
「開いた情報」というのが、列なのか行なのかシートなのかフォームなのか、判らくては答えようがないと思います それぞれ、やり方が異なりますから また、プログラムは何かしらのアクションで動くものなので、自動的にはできないと思いますよ
- kkkkkm
- ベストアンサー率66% (1719/2589)
それぞれのシートの目次に飛ぶボタンのマクロは全て以下のプロシージャ(同じもの)を指定 Sub ボタン1_Click() ActiveSheet.Visible = False Sheets(目次のあるシート名).Activate End Sub ではだめだったんですか?
お礼
ありがとうございます できました たすかります