ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者: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
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)
最新から表示回答順に表示