[英]vba excel: using dynamic array in seperated workbook which is created from template
我從數據庫中獲取了一些信息,以用戶窗體的形式在列表框中顯示了這些信息,並將其填充到名為lsarr()的數組中,該數組具有動態行和靜態列。 現在,我要在報表工作簿中使用此數組,該工作簿將另存為報表文件夾中。 首先,由數組的動態行准備一個模板,然后按特定名稱將報告保存到新工作簿中。 一切正常,直到lsarr()想要復制到導出的工作簿中的某個范圍。 當我致電lsarr()時,我收到一條消息
子或功能未定義
代碼如下:
Private Sub cusbas_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
...............
...............
lsarr = soldtable.List
...............
...............
end sub
這很好
Private Sub sales2templ_Click()
Dim outpath As String
Dim curdate As String
Dim repno As String
Dim xl3 As Object
Dim twb2, wb3 As Workbook
Dim i, j, k As Integer
Set xl3 = CreateObject("Excel.Application")
xl3.Visible = True
xl3.Workbooks.Open ActiveWorkbook.Path & "\Templates\Report-Sales.xltx"
Set twb2 = xl3.ActiveWorkbook
twb2.Sheets("Sales-Report").Activate
twb2.Worksheets("Sales-Report").Range("C1").value = custlbl
If totalinvpercust > 2 Then
For i = 1 To totalinvpercust - 2
twb2.Sheets("Sales-Report").Range("A7:G7").EntireRow.Offset(1, 0).Insert
Next i
For j = 1 To totalinvpercust
twb2.Sheets("Sales-Report").Range("A" & j + 6).value = j
Next j
For k = 0 To totalinvpercust - 1
twb2.Sheets("Sales-Report").Range("B" & j + 7).value = lsarr(0, k)
Next k
Else
twb2.Sheets("Sales-Report").Range("A7").value = 1
twb2.Sheets("Sales-Report").Range("A8").value = 2
End If
'On Error Resume Next
repno = frm_salesrev.cusbas.Text
curdate = Format(Now(), "yyyymmddHhNnSs")
outpath = ActiveWorkbook.Path & "\Reports\report" & "-" & repno & "-" & curdate & ".xlsx"
twb2.SaveAs Filename:=outpath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False, AccessMode:=xlExclusive
xl3.ActiveWindow.WindowState = xlMaximized
Set twb2 = Nothing
Set xl3 = Nothing
Set xl2 = Nothing
curdate = ""
outpath = ""
end sub
問題發生在
twb2.Sheets("Sales-Report").Range("B" & j + 7).value = lsarr(0, k)
*兩個子都在同一個模塊中*
在子例程外部調暗變量,使其成為表單/模塊級變量,而不是像這樣:
Dim lsarr() as Variant
Private Sub cusbas_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Redim lsarr(cuschk,6)
...............
...............
lsarr = soldtable.List
...............
...............
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.