У меня есть основная процедура, которая создает новую рабочую книгу и динамически связывает с ней новые листы (на основе данных в отдельной входной книге / листе).
За исключением основной процедуры:
Sub MainRoutine()
Dim NmOutBook As String
NmOutBook = "Client1Output_" & Format(CStr(Now), "yyyy_mm_dd_hh_mm")
Dim PosSourceBk, TrnSourceBk, OutputBk As Workbook
Set PosSourceBk = Workbooks.Open("U:\Documents\Implementations\Client1\Client1Positions.xlsx")
Set TrnSourceBk = Workbooks.Open("U:\Documents\Implementations\Client1\TradeHistory_0301.xlsx")
Dim TrnSrcSht, TrnOutSht, PriorTrnOutSht, PosOutSht As Worksheet
Set TrnSrcSht = TrnSourceBk.ActiveSheet
'Create workbook to store output sheets
Set OutputBk = Workbooks.Add
...
If (SecNm <> PriorSecNm) Then
Set TrnOutSht = OutputBk.Sheets.Add(after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
TrnOutShtName = CStr(SecNm) + "_b"
TrnOutSht.Name = TrnOutShtName
AddXactSheetHeaders OutputBk, TrnOutSht
Я передаю свой выходной объект рабочей книги и соответствующий объект рабочей таблицы в подпрограмму AddXactSheetHeaders, которая выглядит следующим образом:
Sub AddXactSheetHeaders(ByVal wb, ByVal ws)
With wb
With ws
Range("A1").Value = "TradeDate"
Range("B1").Value = "SettleDate"
Range("C1").Value = "Tran ID"
Range("D1").Value = "Tranx Type"
Range("E1").Value = "Security Type"
Range("F1").Value = "Security ID"
Range("G1").Value = "SymbolDescription"
Range("H1").Value = "Local Amount"
Range("I1").Value = "Book Amount"
Range("J1").Value = "MOIC Label"
Range("K1").Value = "Quantity"
Range("L1").Value = "Price"
Range("M1").Value = "CurrencyCode"
End With
End With
End Sub
Результатом этого является то, что ячейки A1: M1 обновляются, но в неправильной книге / листе.
Я пытался передать ссылки на объекты по ссылке; когда я делаю это, обновляется другая (но все же неправильная) рабочая книга / рабочий лист.
Я, должно быть, упускаю что-то очевидное, но понятия не имею, что это может быть.
Любая помощь приветствуется. Благодаря.