質問 |
||
| 質問者:yakan2 | エクセル シートを呼び出して表示させる | |
|---|---|---|
困り度:
|
エクセルで 作業シートをsheet1とした場合 sheet1 の A1のセルに 2 と入力した場合sheet2の「データーシート2」を表示 3 と入力した場合sheet3の「データーシート3」を表示 させたいです sheet数は20枚ぐらいあります。 教えて下さい |
|
質問投稿日時:08/07/02 14:10 質問番号:4145668 |
||
回答 |
|
| 回答者:fujillin | #2さんの回答をそのまま微調整。 こういうことではないの? とは言っても、マクロの自動記録ぐらいは覚えて欲しいし、そもそもシート移動をシートタブでやるのと、山田とか入力するのとでほとんど変わらないと思いますけどねぇ・・・ Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub On Error GoTo line Sheets(Target.Value).Activate Exit Sub line: MsgBox "そんなシート無いです!" End Sub |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/07/02 16:41 回答番号:No.5 |
|
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| 回答者:merlionXX | #2のmerlionXXです。 > 作業シートを表示する と言うイメージです 作業シートのA1に数値を入れるならすでに作業シートが表示されているのではないですか? Sheet2 データーシート2 と > 山田 田中 佐藤 〜〜〜〜など の関係がぜんぜん見えません。 |
|---|---|
| 種類:補足要求 どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/07/02 16:07 回答番号:No.4 |
|
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| 回答者:imogasi | >「データーシート2」を表示 多分知らないのだろうが、関数ではできませんよ。 シートを開くことは、関数では出来ない。関数では指定したシートのセルの値やそれを加工した値しか出せません。 VBAの知識が必要です。 VBAコードをここに挙げるべきかどうか迷う。 イベントというものの理解やその他VBAの経験が要る。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then a = Array("", "Sheet1", "Sheet2", "Sheet3", "sheet4", "Sheet5") Worksheets(a(Target)).Select End If End Sub ("", "Sheet1", "Sheet2", "Sheet3", "sheet4", "Sheet5")の””の中に実際のシート名を入れて修正してください。増やす場合は "Sheet5"の後にカンマをいれ、””で囲んだシート名を追加してください。 ーーー 関数でやれる、質問に近いものに A1に2,3,4・・のどれかを入れる。 B1に 式 =HYPERLINK("#Sheet"&A1&"!A1","とび先") と入れる。 A1に数字を入れた後に、B1をクリック。 4と入れてB1をクリックすると、Sheet4が開く。 |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/07/02 15:07 回答番号:No.3 |
|
| この回答への補足 | imogasiさん ありがとうございます 他でも書いたように シート名に名前を入れて使っています 関数で呼べると思い 質問いたしました。 詳しい説明ありがとうございます。 |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| 回答者:merlionXX | 表示させるとは、そのシートをアクティブにするという意味ですね? データーシートの次の番号は全角なんですね? なら、以下を試してみてください。 1.シートのタブを右クリックし、「コードの表示」を選択。 2.出てきたVisualBasicEditor(白い部分)に下記のコードをコピペ。 '*****ここから下をコピペ***** Private Sub Worksheet_Change(ByVal Target As Range) Dim x As Worksheet If Target.Address <> "$A$1" Then Exit Sub On Error GoTo line s = "データーシート" & StrConv(Target.Value, vbWide) Set x = Sheets(s) x.Activate Exit Sub line: MsgBox "そんなシート無いです!" End Sub '*****ここより上までをコピペ***** 3.AltキーとF11キーを同時に押してワークシートへもどります。 これでA1セルに数値を入力してみてください。 もし、データーシートの次の番号が半角なら s = "データーシート" & StrConv(Target.Value, vbWide)を s = "データーシート" & StrConv(Target.Value, vbNarrow)に変えてください。 |
|---|---|
| 種類:回答 どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/07/02 14:37 回答番号:No.2 |
|
| この回答への補足 | とても早い回答ありがとうございます 説明不足で いや いい加減な質問方法ですみません シートには 各々名前を付けてあり 山田 田中 佐藤 〜〜〜〜など 作業シートを表示する と言うイメージです |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| 回答者:hallo-2007 | A2セルにでも(データシート2がそれぞれのシートのB1として) =INDIRECT("Sheet"&A1&"!B1") シート名が Sheet1 Sheet2 ・・・ の場合です。 |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/07/02 14:21 回答番号:No.1 |
|
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |