我正在尝试嵌入我的代码。我创建了一个名为JrnlHeader
的子程序来声明我将在另一个子程序中使用的变量。我目前只关注一个名为Header
的变量。我想知道为什么Header
在子例程PrintToTextFile
中是空的,以及如何修复它以便能够使用在JrnlHeader中声明的字符串。
Private Sub JrnlHeader()
Dim Header As String
Dim SeqNo As String
Dim SeqVar As String
Dim Bu As String
Dim BuVar As String
Dim JrnlID As String
Dim JrnlIDVar As String
Dim JrnlDate As String
Dim JrnlDateVar As String
Dim Descr As String
Dim DescrVar As String
Dim Ledger As String
Dim LedgerVar As String
Dim Source As String
Dim SourceVar As String
Dim CurEff As String
Dim Reverse As String
Dim AutoLn As String
Dim AdjEnt As String
Header = "<JRNL_HDR_IMP>"
SeqNo = "<SEQNO>" & SeqVar & "</SEQNO>"
Bu = "<BUSINESS_UNIT>" & BuVar & "</BUSINESS_UNIT>"
JrnlID = "<JOURNAL_ID>" & JrnlIDVar & "</JOURNAL_ID>"
JrnlDate = "<JOURNAL_DATE>" & JrnlDateVar & "</JOURNAL_DATE>"
Descr = "<DESCR254>" & DescrVar & "</DESCR254>"
Ledger = "<LEDGER_GROUP>" & LedgerVar & "</LEDGER_GROUP>"
Source = "<SOURCE>" & SourceVar & "</SOURCE>"
CurEff = "<CUR_EFFDT>" & JrnlDateVar & "</CUR_EFFDT>"
Reverse = "<REVERSAL_CD>N</REVERSAL_CD>"
AutoLn = "<AUTO_GEN_LINES>N</AUTO_GEN_LINES>"
AdjEnt = "<ADJUSTING_ENTRY>N</ADJUSTING_ENTRY>"
End Sub
Sub PrintToTextFile()
Dim FileNum As Integer
JrnlHeader
FileNum = FreeFile ' next free filenumber
'Open "C:\Temp\TEXTFILE.TXT" For Output As #FileNum ' creates the new file
Open "C:\temp\TEXTFILE.TXT" For Append As #FileNum
Print #FileNum, Header
Close #FileNum ' close the file
End Sub
答案 0 :(得分:1)
您已将Header
定义为JrnlHeader
中的本地变量。这意味着它的范围不会扩展到其他子例程/函数。
通过将Dim Header As String
语句放在代码模块中的第一个子例程/函数之前,可以将变量的范围定义为“模块”级别。然后,当PrintToTextFile
中的执行恢复时,其值将可用。
或者,您可以更改代码以将变量作为两个函数之间的参数传递:
Sub PrintToTextFile()
Dim Header As String
'...
JnrlHeader Header
'...
Print #FileNum, Header
End Sub
Sub JrnlHeader(Header As String)
'... (but don't include any declaration of Header!)
Header = "<JRNL_HDR_IMP>"
'...
End Sub
但是,根据JrnlHeader
中设置了多少变量来判断,我认为你会想要使用模块级范围变量方法。
答案 1 :(得分:0)
这两个子程序的范围不同。定义的变量JrnlHeader在PrintToTextFile中不可用。如果要在PrintToTextFile中使用标题,请将其更改为PrintToTextFile(标题为字符串),并从JrnlHeader调用PrintToTextFile(标题)。