0

変数に基づいてシートを参照しようとしています。

トップレベルから、変数 Num = 1 To 18 によって駆動される For ループがあります。変数「CurrentSN」は、シートのシリアル番号のリスト (「SN」) に基づいて値を変更します。

Dim Num As Integer 
Dim CurrentSN As String

CurrentSN = Sheets("SN's").Cells(Num, 1).Value

ワークブックには 18 の既存のシートがあり、それぞれにこれらのシリアル番号のいずれかが付けられています (合計 18)。ループごとに適切なシートを参照したいので、使用しました...

Sheets(CurrentSN).Range("A1").Select

残念ながら、この行でエラーが発生しています。ここでどこが間違っていますか?

4

2 に答える 2

4

問題は、コレクションのようなSheetsコレクションが 2 つの異なる種類の入力を受け入れることです。

  1. 名前/キー
  2. インデックス番号

あなたの場合、キー (シリアル番号) が必要ですが、VBA はインデックス番号を取得しようとします。これは、文字列ではなく数値が提供されているためです。Sheets(CStr(CurrentSN))したがって、シートに!を付ける必要があります。

また、Ross は、シート内の何かを選択する前に、シートをアクティブにする必要があると指摘しています。ただし、99.999% のケースでは使用する必要はありません.Select(したがって、 を使用する必要はありません.Activate) 。http://www.cpearson.com/excel/optimize.htmを参照してください。

于 2013-04-01T21:21:37.980 に答える
2

シート上で何かを選択する前に、シートをアクティブにする必要があります。
Sheets(CurrentSN).Activate
前に使用
Sheets(CurrentSN).Range("A1").Select

于 2013-04-01T21:21:11.170 に答える