私は、メインフレームから生成されたレポートを取り込み、解析してメインフレームから追加情報を引き出し、 vsレポートのロード。最初にレポートを読み込んで実行すると、すべて正常に動作します。新しいブックを作成し、名前を付けて保存します。私は、メインフレームレポートを修正して全体を再解析することなく、レポートに項目を追加する機能を追加しようとしています。私は全く同じサブシステムと関数を呼び出すが、レポートに項目を追加しようとすると、コード内でこの行に到達すると失敗する。"方法2回目に呼び出されたときに '_Global'オブジェクトの '行'が失敗しました
Set xlcell = WB.Sheets(WCSheetName).Cells(WB.Sheets(WCSheetName).Cells(Rows.Count, "B").End(xlUp).Row + 1, "B")
このコードは、両方のインスタンスで同じサブから呼び出される関数内にあります。関数は次のように最高の
Function AddToWC(ByVal WCSheetName As String, _
ByVal WCName As String, _
ByVal Cmpt As String, _
ByVal Parent As String, _
ByVal dDate As Date, _
ByVal ReqHrs As Single, _
ByVal WB As Workbook, _
ByVal ID As String, _
ByVal Seq As String, _
ByVal Description As String, _
ByVal Plt As String, _
ByVal Que As Long) As Date
として定義されている私は、ブック、それが機能はこのラインを使用して呼び出され
を参照することになっているワークシートの両方を修飾してきたように、これは動作するはずです、伝えることができますコード
CDT = AddToWC("WC_Summary", rs!WCID, gProdStruct.Components(Y).Name, gProdStruct.Name, CDT, xlCell.Offset(0, 16).value - xlCell.Offset(0, 11).value, CPWB, RefID, rs!SeqNum, rs!OpDesc, rs!WCPlt, xlCell.Offset(0, 11).value)
のワークブックを確認し、合格CPWB
として最初ブックが既にgCheckForWorkbook Plt, IsPList
を呼び出し、次にに割り当てることによって開かれているかどうかをチェックして、正しいブックに設定されています10これは、このサブを実行し、どのようなこれまでのコード.Cells(Rows.Count, "B")
の行のこのセクションを理由では私の問題を引き起こしていた正確な部分であることが表示されますグローバル変数
Sub gCheckForWorkbook(ByVal Plt As String, Optional ByVal IsPList As Boolean)
Dim WB As Workbook
Dim WBE As Boolean
For Each WB In Workbooks
If InStr(1, WB.Name, "Capacity Planning Rep", vbTextCompare) > 0 Then
If IsPList = False Then
If MsgBox("A Capacity Planning workbook is already open." & vbCrLf & "Would You Like To Use It?", vbYesNo) = vbYes Then
gWBName = WB.Name
WBE = True
Exit For
Else
MsgBox "Please Close The Open Workbook And Run The Report Again"
' return value to exit sub
WBE = True
Exit For
End If
Else
WBE = True
End If
End If
Next WB
If WBE = False Then gCreateWorkBook Plt
End Sub
完璧に動作しているようです'' xlcell = WB.Sheets''を設定してください( "......'。 – Ralph
@Ralph - そのトリックを行ったようです。なぜそれがうまくいくのか説明してもらえますか? –
@Ralph nope、同じ問題 :( –