任意のシートを特定するときは「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プロパティをつけると。そう覚えておきましょう。ちなみに私は、数年前これでハマった経験があります。