0

質問を検索して、非常に近いものを見つけましたが、まだ何か間違っています。次のコードで、ワークシート名に変数を使用したいと考えています。

Option Explicit

Dim wrkPro As String
Dim wrkFFIS As String

Sub MainLoop()
'*************************************************************************************************************************
'*
'*************************************************************************************************************************
    Dim FFISno As Range         '* Admustments
    Dim ProTracksno As Range    '* Contracts
    Dim FFISnx As String        '* Corrected Contract Number
    Dim PTdte As Date
    Dim FFISdte As Date
    Dim orow As Integer
    Dim frow As Integer
    Dim prow As Integer
    Dim rngRange As Range

    orow = 2                    '* Output Row
    frow = 2                    '* FFIS Row
    prow = 7                    '* ProTracks Row

    '* Set Worksheet for input ...
    wrkPro = CStr(Sheets("SysCtrl").Cells(4, 2).Value) & "ProTracts"
    wrkFFIS = CStr(Sheets("SysCtrl").Cells(4, 2).Value) & "FFIS"

    '* Clear the Recap Sheet
    Sheets("Recap").Range("A2, B5000").ClearContents
    '* Sheets("Recap").Rows(CStr(orow) & ":" & CStr(Worksheets("Recap").Cells(Rows.Count, 1).End(xlUp).Row)).ClearContents
    '* Sheets("Recap").Cells(1, 1).Select

BeginLoop:
    '* Do until EOF on ProTracks Table
    Do While Sheets(wrkPro).Cells(prow, 7) <> "" And Sheets(wrkFFIS).Cells(frow, 4) <> ""

実行すると、添え字が範囲外のエラーになります。確認したところ、変数には正しい値が含まれていますが、Do While で文字列として使用されていません。

文字列の前後に Char(34) を追加して、他の投稿で提案されているように Dim を Public に変更しようとしましたが、喜びはありませんでした。

任意の提案をいただければ幸いです。

カーター

4

2 に答える 2

0

Sheets(wrkPro).Cellsの代わりに Worksheets (wrkPro).Cellsを使用してみてください-Sheets()は、インデックス、つまり整数、たとえばSheets(1).Cellsなどでシートを参照します。Worksheets(wrkPro).Cells文字列変数を名前は受け入れられるはずです。

于 2013-01-10T18:13:38.363 に答える
0

この行を変更します。

Sheets("Recap").Range("A2, B5000").ClearContents

これに:

Sheets("Recap").Range("A2:B5000").ClearContents
于 2013-01-10T20:09:26.130 に答える