- 締切済み
Vbaで条件分岐、ワークシート名で振り分け
Vbaに不慣れです。 ワークシート名が「りんご」と「イチゴ」だと仮定して。「イチゴ」のワークシートが無い場合は「りんご」のワークシートがアクティブになる方法を教授頂ければ助かります。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
質問表現が不十分ではないか? 珍しいタイプの質問だからかな。 何もない(例えば、ブックを開いて、まだ何もしてない次のステップ)ときに、この作業(VBA)を行う、のではないだろう。 どういうタイミングでこの質問のケースが起こるのか? ・VBAのプログラムの中で、SelectやActivateした時、こういうことをやるのか。 ・人間の操作で、「イチゴ」シートを選択したとき でも選択するはずがないですね。見えてないのだから。 ・その他 この「その他」だとしたら、文章で表せばどういうときか? *エラーが発生するから、その時を捉えて、「りんご」シートの処理に 振り替わるようにする? *プログラムの中で、Sheet2を指すステップに来た時かな。 Activesheets("Sheet2")のほかに、Activesheet.Nextという表現もあるしね。 Sub test02() ActiveSheet.Next.Select End Sub をSheet1を開いていて実行すると、下記Workbook_SheetActivateイベントのプログラムのおかげで、Sheet1に戻ったが。 ーー 小生が想像したのは ThisWorkbookのイベントで Private Sub Workbook_SheetActivate(ByVal Sh As Object) MsgBox "AAA" If Sh.Name = "Sheet2" Then MsgBox "BBB" Sheets("sheet1").Activate End If End Sub のようなものです。 しかし、実戦で使ったことはありません。 ーーー 標準モジュールに Sub test01() Worksheets("Sheet2").Select MsgBox "CCC" End Sub を入れて実行すると、このWorksheets("Sheet2").Selectの行を通るとき、上記のブックのイベントを通る(発生する)ようだ。 ーー 以下のVBAプログラムステップで実行される処理も、両シート兼用(どちらでも走る、プログラムも、またデータ内容もそれに適合している必要がある)になるように、プログラムを細心の注意を払って作っておかないといけませんわね(面倒)。
- SI299792
- ベストアンサー率47% (774/1620)
' Sub Macro1() ' On Error Resume Next Sheets("りんご").Select Sheets("イチゴ").Select End Sub