データベースからいくつかの情報を取得し、ユーザーフォームのリストボックスに表示し、動的行と静的列を持つlsarr()という名前の配列に配置しました。 この配列は、レポートフォルダとは別に保存されたレポートワークブックで使用します。第1に、動的な配列の行によってテンプレートが準備され、レポートは特定の名前で新しいワークブックとして保存されます。 lsarr()がエクスポートされたブックの範囲にコピーするまで、すべて正常に動作します。 iはlsarr()を呼び出すとき、私は、次のようなメッセージをvba excel:テンプレートから作成された別のワークブックで動的配列を使用する
コードがある定義されていない
サブ又は受信機能:これは正常に動作
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)
*両方の潜水艦は、同じモジュール内にある*
'lsarr()'? – braX
最初のサブ:dim lsarr()はバリアントredim lsarr(cuschk、6)としてバリアント – hussein5
さて、問題があります。その変数を他の関数に渡す必要があります。その変数はClickイベントであるため、その変数を使用する必要があります。 – braX