- ベストアンサー
エクセルマクロでシート名を指定してアクティブにする方法
- エクセルマクロを使用して特定のシート名をアクティブにする方法について助言ください。
- 現在のマクロでは、シート名を取得し、指定したシートが存在するか確認しています。作業シートのC1セルの値が0であれば、指定の日付のシートが存在しないと判断されます。
- しかし、コードにおいてシート名が指定の番号ではなく、シート名が直接選択されるようにしたいです。具体的には、3と指定した場合にシート名が「3」のシートを選択できるようにしたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでどうでしょう。 Sub 抽出() Dim i As Integer 'シート名を取得する Worksheets("作業").Activate Columns("A").ClearContents For i = 1 To Worksheets.Count Cells(i, 1).Value = Worksheets(i).Name Next i Range("C1").Select If ActiveCell.Value = 0 Then 'C1が0の場合の処理 MsgBox "日付シートの選択が許可されていません。" Exit Sub End If Worksheets("作業2").Activate Range("I3").Select For i = 1 To Worksheets.Count If Worksheets(i).Name = CStr(ActiveCell.Value) Then Worksheets(i).Activate Exit Sub End If Next i MsgBox "指定の日付シートが存在しません。" End Sub
その他の回答 (2)
- mitarashi
- ベストアンサー率59% (574/965)
下記の様に文字列である事を明示してはいかがでしょうか。ご参考まで。 Sheets(Cstr(ActiveCell.value)).Select
- rukuku
- ベストアンサー率42% (401/933)
こんばんは 新しいブックに、シートを3つ以上用意し、1番目のシートの名前を「3」にして、以下のソースを試してみてください Sub sumple1() Dim A As String A = 3 Sheets(A).Select End Sub Sub sumple2() Dim A As Integer A = 3 Sheets(CStr(A)).Select End Sub Sub sumple3() ActiveCell.Value = 3 Sheets(CStr(ActiveCell.Value)).Select End Sub ポイントは「数字の3ではなく、文字の3ですよ」ということをVBAに伝える事です。