任意のシートを特定するときは「Sheets("Sheet1")」のような書き方をします。基本です。
Sub Sample1() Sheets("Sheet1").Select End Sub
では、この"Sheet1"が変数に入っていたら。
Sub Sample2() Dim A As String A = "Sheet1" Sheets(A).Select End Sub
ぜんぜん問題ないです。では次。この"Sheet1"がセルに入っていたら。ここではアクティブシートのセルA1に"Sheet1"という文字列が代入されているとしましょう。
Sub Sample3() Sheets(Range("A1")).Select End Sub
とうぜん、こういう発想になりますよね。でも、結果はエラーです。
もちろん「Worksheets(Range("A1"))」でもエラーです。これ、正直私にも何でエラーなのかの正確な理由はよく分かりません。てゆーか、面倒くさいので考えていません。ちなみに次のように、一度変数に入れればうまくいきます。
Sub Sample3() Dim A As String A = Range("A1") Worksheets(A).Select End Sub
どうしても変数に入れたくないときは、次のようにValueプロパティをつけてやると、うまくいきます。
Sub Sample3() Sheets(Range("A1").Value).Select End Sub
たぶんですけど、SheetsプロパティやWorksheetsプロパティの設計と、ただRange("A1")と書いたときの挙動によって起こるのではないかと。面倒くさいので、それ以上は考えていません。いずれにしても、セルに入力されているシート名を使うときは、一度変数に入れるか、Valueプロパティをつけると。そう覚えておきましょう。ちなみに私は、数年前これでハマった経験があります。