我无法弄清楚为什么在尝试编译代码时收到错误消息。我需要从输入文件中读取21行,以在现有的excel文件中创建一个新记录。然后我需要重复大约3000行输入的过程。
在我的While语句中突出显示(filenum)并收到错误消息: 编译错误;预期结束子
---------------------------
Microsoft Visual Basic for Applications
---------------------------
Compile error:
Expected End Sub
---------------------------
OK Help
---------------------------
以下是一些代码:
Sub btnProcessData_Click()
Dim FileNum As Integer
FileNum = FreeFile()
Open "filename" For Input As #FileNum
Dim DataLine As String
Dim strCallNum As String
a bunch of Dim statements appear here
While Not EOF(FileNum)
Sub CallInvoiceNums()
Line Input #FileNum, strDataLine
strCallNum = strDataLine
MsgBox strCallNum
Line Input #FileNum, strDataLine
strInvoiceNum = strDataLine
MsgBox strInvoiceNum
Line Input #FileNum, strDataLine
strText_String = strDataLine
MsgBox strText_String
Sub Break_String()
WrdArray() = Split(text_string)
For i = LBound(WrdArray) To UBound(WrdArray)
strg = strg & vbNewLine & "Part No. " & i & " - " & WrdArray(i)
Next i
strArrayElements = UBound(WrdArray, 2)
MsgBox strg
End Sub
End Sub
Wend
End Sub
答案 0 :(得分:0)
我已经格式化了代码,因此它是可读的。为此,我选择了代码,然后单击带花括号的按钮。我怀疑不可读的代码是导致投票失败的原因。
你在另一个中声明一个sub。你有:
Sub btnProcessData_Click()
. . .
While Not EOF(FileNum)
Sub CallInvoiceNums()
您必须先与btnProcessData
结束End Sub
才能开始Sub CallInvoiceNums
。
Sub和Function声明不能嵌套。如果您需要进一步的帮助,请尝试分离您的潜艇,然后再回来。
<强>更新强>
您的代码即将结束:
Sub Break_String()
WrdArray() = Split(text_string)
For i = LBound(WrdArray) To UBound(WrdArray)
strg = strg & vbNewLine & "Part No. " & i & " - " & WrdArray(i)
Next i
strArrayElements = UBound(WrdArray, 2)
MsgBox strg
End Sub
这看起来好像你想把这个代码拆分为一个子程序,但却没有。如果您删除了Sub Break_String()
和End Sub
,则看起来好像剩下的代码可以正常工作。 Sub CallInvoiceNums()
及其匹配的End Sub
也是如此。您是否熟悉使用不同方法声明子例程和函数的语言?
我不明白你的前缀。我已经用语言编程了传统的变量名称前缀和表示其类型的代码。 “wrd”可能用于16位或32位整数,但在WrdArray
中,您将其用于字符串数组。您在strArrayElements
中存储了一个32位整数。请解释一下。