我是成对的!参考下面程序。还有我发现我在运行程序时,生成的文件小,这时候的文件大小不对,当我退出程序,就对了。Private Sub Assign_Value_To_Array() Dim intClsLineNum As Double Dim InputClsF As Double Dim strClsTemp As String Dim InputClsName As String
Dim TempFileName As String Dim TempF As Integer
Dim strtemp As String Dim strNewTemp As String Dim R As Double Dim Feedrate As String
谢谢你,caofusheng !我知道,但是我是一个主程序中的两个子程序!所以我现在只能执行完第一个子程序,退出主程序,再运行主程序,执行第二个子程序。这样就可以了。
我想怎么处理呢?谢谢!
我是成对的!参考下面程序。还有我发现我在运行程序时,生成的文件小,这时候的文件大小不对,当我退出程序,就对了。Private Sub Assign_Value_To_Array() Dim intClsLineNum As Double
Dim InputClsF As Double
Dim strClsTemp As String
Dim InputClsName As String
Dim TempFileName As String
Dim TempF As Integer
Dim strtemp As String
Dim strNewTemp As String
Dim R As Double
Dim Feedrate As String
strFeedFile = ""
Cls_Line_Number
intClsLineNum = 0
InputClsF = FreeFile
InputClsName = TxtOpenClsF.Text
TempFileName = Replace(InputClsName, ".cls", "_Opt.cls")
strFeedFile = TempFileName
If InputClsName = "" Then Exit Sub
Open InputClsName For Input As #InputClsF
TempF = FreeFile
Open TempFileName For Output As #TempF
While Not EOF(InputClsF)
Line Input #InputClsF, strtemp
intClsLineNum = intClsLineNum + 1 If intClsLineNum < intClsFirst Then
GoTo EXTIF
ElseIf intClsLineNum = intClsFirst Then
Call First_Point_CoordianteXYZ(strtemp)
'MsgBox "X:" & PointFirst(1) & "Y:" & PointFirst(2) & "Z:" & PointFirst(3)
ElseIf intClsLineNum = intClsFirst + 1 Then
Call Second_Point_CoordianteXYZ(strtemp)
'MsgBox "X:" & PointSecond(1) & "Y:" & PointSecond(2) & "Z:" & PointSecond(3)
ElseIf intClsLineNum = intClsFirst + 2 Then
Call Third_Point_CoordianteXYZ(strtemp)
'MsgBox "X:" & PointThird(1) & "Y:" & PointThird(2) & "Z:" & PointThird(3)
ElseIf intClsLineNum > intClsFirst + 2 And intClsLineNum < intClsEnd + 1 Then
PointFirst(1) = PointSecond(1)
PointFirst(2) = PointSecond(2)
PointFirst(3) = PointSecond(3)
PointSecond(1) = PointThird(1)
PointSecond(2) = PointThird(2)
PointSecond(3) = PointThird(3)
Call strLine_To_Point_CoordianteXYZ(strtemp)
' MsgBox "First Line"
' MsgBox "X:" & PointFirst(1) & "Y:" & PointFirst(2) & "Z:" & PointFirst(3)
' MsgBox "Second Line"
' MsgBox "X:" & PointSecond(1) & "Y:" & PointSecond(2) & "Z:" & PointSecond(3)
' MsgBox "Third Line"
' MsgBox "X:" & PointThird(1) & "Y:" & PointThird(2) & "Z:" & PointThird(3) R = Calculate_R(PointFirst(), PointSecond(), PointThird())
If R = 0 Then
Feedrate = ""
strNewTemp = ""
ElseIf R > Val(TxtR1.Text) * Val(TxtRFactor.Text) Then
Feedrate = TxtFMax.Text
strNewTemp = "F" & Feedrate
Print #TempF, strNewTemp
ElseIf 0 < R <= Val(TxtR1.Text) * Val(TxtRFactor.Text) Then
Feedrate = TxtFMin.Text
strNewTemp = "F" & Feedrate
Print #TempF, strNewTemp
End If
' strNewTemp = strtemp & Chr(32) & "F" & Feedrate & Str(R)
' strNewTemp = "F" & Feedrate
' Print #TempF, strNewTemp
Else
Exit Sub
End If
EXTIF:
Wend
Close #TempF
Close #InputClsF
End Sub
我已经按照你的发现修改好了程序,谢谢!
OPENCLOSE
必须成对,文件打开后操作好既关闭,再执行其它与文件操作无关的代码。
同样
IF THEN
ELSEIF THEN
ENDIF
各语句不能分散。GoTo语句建议不要使用,会破坏程序的结构。