VBA – Excel程序太大
从阅读以前的答案我明白我需要分手我的代码。 我只是需要帮助做到这一点。
我有一个大的select案例程序,大约有50个select。 很棒! 直到我编程的一半“case is =”代码parsing行如果情况是真的。
看来我的variables“Dataline”不能传递给子程序。 如何将Linevariables传递给我的Sub。
Open fName For Input As #FileNum While Not EOF(FileNum) 'read in data one line at a time. Line Input #FileNum, Dataline 'Read first three characters of line to determine Line Name LineName = Left(Dataline, 3) 'Find line Name them parse Select Case LineName Case Is = "EH " 'Envelope Header EHsub 'Case sub routine (because I need to breakup code) End Select ' End of Select Case Wend ' end of While Loop Close #FileNum 'close the file
Sub EHsub() 'if envelope header = "EH " then parse dataline Field01 = Mid(Dataline, 1, 3) 'read 2nd data item ' I get an error here: "DataLine" is null 'place date item in data worksheet Sheets("FannieData").Cells(Datarow, DataColumn).Value = Field01 End Sub
要么按照Alex McMillan的解决scheme(我会这么做),要么你声明Dataline
variables的范围足够宽
至于后面的这个select,如果EHsub()
和它的每个调用者都在同一个模块中,那么你应该放置它
Dim Dataline as Variant
在它的最顶端
如果EHsub()
调用者被传播到不同的模块中,那么你应该放置
Public Dataline as Variant
在任何模块的最顶端(不pipe是哪一个模块,但可以select首先初始化Dataline
variables的模块)
你没有将DataLine
传递给你的子类,所以它不知道这个variables是存在的。 尝试这样的事情:
Select Case LineName Case Is = "EH " 'Envelope Header EHsub DataLine End Select
Sub EHsub(DataLine) 'if envelope header = "EH " then parse dataline Field01 = Mid(Dataline, 1, 3) 'read 2nd data item ' I get an error here: "DataLine" is null 'place date item in data worksheet Sheets("FannieData").Cells(Datarow, DataColumn).Value = Field01 End Sub