Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL マクロ )

Excel VBAで複数のシートを参照してアクティブにする方法

このQ&Aのポイント
  • Excel VBAを使用して、複数のシートを参照してアクティブにする方法についてご質問です。
  • 質問文章の要点は、マクロを使用してセルの数値を参照し、その数値に応じて特定のシートをアクティブにする方法です。
  • 質問者は、30ほどのシートがあり、それぞれのシートで特定の条件を満たす場合に、そのシートをアクティブにしたいと考えています。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

あなたが書こうとしたマクロの動作を忠実に再現すると,次のように(多分)なります。 private sub Workbook_Open()  dim i as long  for i = worksheets.count to 4 step -1   if 0 <= worksheets(i).range("M1") and worksheets(i).range("M1") < 7 then    worksheets(i).select    exit sub   end if  next end sub あるいはそれとも,こういう事だったのかもしれません。 private sub Workbook_Open()  dim i as long  for i = 4 to worksheets.count   if 0 <= worksheets(i).range("M1") and worksheets(i).range("M1") < 7 then    worksheets(i).select    exit for   end if  next end sub ●そもそも,あなたが今回のマクロで「どういう結果が欲しかったのか」ご相談に示されていませんので,まずそこいらを明らかにする所から始めましょう。 ●サンプルマクロをみて勉強してください  If 0 <= Worksheets(4).Range("M1") < 7 Then  といった書き方は,間違いです。

hatak33
質問者

お礼

有難うございました。 書いて頂いたマクロで完璧です。 .count を使うんですね。勉強になりました。 試行錯誤でやっていまして If 0 <= Worksheets(4).Range("M1") and  Worksheets(4).Range("M1")< 7 Then は、質問した後に気づきました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • camputer
  • ベストアンサー率64% (22/34)
回答No.2

 今晩は。 ↓の2通りですね^^b 1個目は「全シート中の個々のシートに対して繰り返せ」で、 2個目は「1から、全シートの数まで、シート番号を繰り返せ」です。 どっちでもお好きな方を使ってください。 Sub 全シート取得() For Each シート In Worksheets If 0 <= シート.Range("M1") And シート.Range("M1") < 7 Then MsgBox (シート.Name) 'シート.Activate End If Next End Sub Sub 全シート取得2() For シートNo = 1 To Worksheets.Count If 0 <= Worksheets(シートNo).Range("M1") And Worksheets(シートNo).Range("M1") < 7 Then MsgBox (Worksheets(シートNo).Name) 'Worksheets(シートNo).Activate End If Next End Sub  あとちなみに、IF 4<x<7 then のように書くとVBAでは「x<7」の検査結果のみを返してきますので、 意図した動きになりません。 IF 4<x And x<7 then と書く癖をつけておく方がいいです。 >マクロは初心者です これからどうぞ頑張って^^b

hatak33
質問者

お礼

有難うございました。 .count を使うとこんなに簡単に出来るんですね。 勉強になりました。

すると、全ての回答が全文表示されます。

関連するQ&A