- ベストアンサー
エクセルのマクロに付いて教えてください。
エクセルのマクロに付いて教えてください。 コマンドボタンで、A1セルに1と表示されたときにはSheet1へ、A1セルに2と表示されたときにはSheet2へ移動出来るようにしたいのですが、どうしても分かりません。 諸先生方のお知恵を拝借したいです。よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんなかんじでいけるかと。 On Error Resume Next Worksheets("Sheet" & ActiveSheet.Cells(1, 1).Value).Activate On Error GoTo 0
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
>1と表示されたときにはSheet1へ 1とシート名の末尾の1が照応しないと考えて たった2行で出来るよ。 シートにボタンを1つ貼り付け。 A1セルに1,2,3のどれかをいれ、ボタンをクリック。 ーー Private Sub CommandButton1_Click() sn = Array("", "Sheet1", "Sheet2", "集計") Worksheets(sn(Range("A1"))).Select End Sub 1-->Sheet1, 2-->sheet2, 3-->集計 に飛ぶ。そういう対応表を、sn = Array(・・)に作る。 0に当たる最初は””にすること。
- diashun
- ベストアンサー率38% (94/244)
diashunです。すみません、コード修正してください。 'ここからコピー************************ Option Explicit Private Sub CommandButton1_Click() Dim Wb, Sh1, Sh2 Set Wb = ThisWorkbook Set Sh1 = Wb.Worksheets("Sheet1") Set Sh2 = Wb.Worksheets("Sheet2") If Sh1.Range("A1") = 2 Then Sh2.Activate Sh2.Range("A1").Select else Sh1.Range("A1").Select End If Set Wb = Nothing Set Sh1 = Nothing Set Sh2 = Nothing End Sub 'ここまでコピー************************
- diashun
- ベストアンサー率38% (94/244)
質問者さんのハード、ソフトの環境が不明ですが、少なくともExcelのバージョンやOSのバージョンは付加していたほうが良いと思います。 当方、Excel2007、Windows Vista Ultimate ですが・・・。 以下のコードをVBEの標準モジュールにコピペして実行してみてください。 この場合、ActiveXコントロールの「CommandButton1」を「"Sheet1"」に貼り付けて見ました。 'ここからコピー************************ Option Explicit Private Sub CommandButton1_Click() Dim Wb, Sh1, Sh2 Set Wb = ThisWorkbook Set Sh1 = Wb.Worksheets("Sheet1") Set Sh2 = Wb.Worksheets("Sheet2") If Sh1.Range("A1") = 1 Then Sh2.Activate Sh2.Range("A1").Select End If End Sub 'ここまでコピー************************
- marbin
- ベストアンサー率27% (636/2290)
各シートに簡単にジャンプしたい、ということでしたら他にもいろいろ方法があります。 シートタブの左の三角矢印(表示するシートタブの移動)のところで 右クリックすると、シート一覧が表示されます。 そこから選択してジャンプできます。 シートタブを選択するのとあまり変わりませんが、各シートのA1セルを名前ボックスで 名前を定義しておくと名前ボックスから選択してジャンプすることが出来ます。
- marbin
- ベストアンサー率27% (636/2290)
ブックのOpenイベントにユーザーフォームを表示させる コードを書いておき、 ユーザーフォーム起動時にシート一覧をリストボックに転記、 リストボックスで選択したシートをアクティブにする方法 です。 'ThisWorkbookモジュール Private Sub Workbook_Open() UserForm1.Show 0 End Sub 'ユーザーフォーム Private Sub ListBox1_Click() ThisWorkbook.Worksheets(Me.ListBox1.List(Me.ListBox1.ListIndex)).Activate End Sub Private Sub UserForm_Initialize() Dim i As Integer For i = 1 To ThisWorkbook.Worksheets.Count Me.ListBox1.AddItem ThisWorkbook.Worksheets(i).Name Next i Me.ListBox1.Value = ActiveSheet.Name End Sub
お礼
こんばんは、早速教えていただきありがとうございます。 試して見たところバッチリでした。 本当にありがとうございました。