Private Sub Command1_Click()
Dim tempdata(1 To 5) As Single
Dim tempstat As Byte
Dim i As Integer
Dim temp As Single
Dim CO As Single, CO2 As Single, CH4 As Single, O2 As Single, N2 As Single
tempstat = collectdata(CO, CO2, CH4, O2, N2)
If tempstat < 1 Then
MsgBox "error", vbOKOnly, "!"
ElseFor i = 1 To 5
tempdata(i) = Choose(i, CO, CO2, CH4, O2, N2)
 
Next i
tempdata(1) = CO
tempdata(2) = CO2
tempdata(3) = CH4
tempdata(4) = O2
tempdata(5) = N2
For i = 1 To 5
txt(i - 1) = tempdata(i)
Next i
End If
End SubPublic Function collectdata(ByRef cCO As Single, ByRef cCO2 As Single, ByRef cCH4 As Single, ByRef c_O2 As Single, ByRef cN2 As Single) As Byte
Dim s As String
Dim x As VariantOn Error GoTo err_CollectData
collectdata = 0
    Open "F:\new\开发中1\HWAcquisitionDataAndResultsB.txt" For Input As #1
    Do While Not EOF(1)
        Line Input #1, s
        If Len(Trim(s)) > 10 Then
            s = Replace(s, vbTab, " ") '替换tab
            s = Replace(s, " ", " ") '替换全角空格
            Do While InStr(s, "  ") <> 0
                s = Replace(s, "  ", " ")
            Loop
            x = Split(s, " ")
            Select Case UCase(x(4))
                Case "CO"
                    CO = CSng(x(5))
                Case "CO2"
                    CO2 = CSng(x(5))
                Case "CH4"
                    CH4 = CSng(x(5))
                Case "O2"
                    O2 = CSng(x(5))
            End Select
        End If
    Loop
 N2 = 1 - CO - CO2 - CH4 - O2 / 10000collectdata = 1
Close #1err_CollectData:
MsgBox "error", vbOKOnly, "!"
End Function最后得出的结果都是0,怎么回事?函数没有调用成功,谁能给我把Command1_Click里的改改。尽量不要破坏下面的函数。

解决方案 »

  1.   

    结果数据
    序号 保留时间(min) 峰高 面积 名称 浓度
    1 1.217 530 2511 co 1.0438
    2 1.432 447 2582 co2 1.09809
    3 1.674 358 2314 ch4 0.92574
    4 1.231 531 1324 o2 0.4565
    这个是相关数据
      

  2.   

    结果数据
    序号 保留时间(min) 峰高 面积 名称 浓度
    1 1.217 530 2511 co 1.0438
    2 1.432 447 2582 co2 1.09809
    3 1.674 358 2314 ch4 0.92574
    4 1.231 531 1324 o2 0.4565
    这个是相关数据,想得道各个气体的浓度
      

  3.   

    结果数据
    序号 保留时间(min) 峰高 面积 名称 浓度
    1 1.217 530 2511 co 1.0438
    2 1.432 447 2582 co2 1.09809
    3 1.674 358 2314 ch4 0.92574
    4 1.231 531 1324 o2 0.4565
    这个是相关数据,想得道各个气体的浓度
      

  4.   

    Option ExplicitPrivate Sub Command1_Click()
        Dim tempdata(1 To 5) As Single
        Dim tempstat As Byte
        Dim i As Integer
        Dim temp As Single
        Dim CO As Single, CO2 As Single, CH4 As Single, O2 As Single, N2 As Single
        
        tempstat = collectdata(CO, CO2, CH4, O2, N2)
        If tempstat < 1 Then
            MsgBox "error", vbOKOnly, "!"
        Else        For i = 1 To 5
                tempdata(i) = Choose(i, CO, CO2, CH4, O2, N2)
            Next i
            '有了上边的循环,以下五句可以删掉。
            tempdata(1) = CO
            tempdata(2) = CO2
            tempdata(3) = CH4
            tempdata(4) = O2
            tempdata(5) = N2

            
            For i = 1 To 5
                txt(i - 1) = tempdata(i)
            Next i
        End If
    End Sub

    '注意你原来的collectdata的形式参数名是cCO等,与你在collectdata中使用的不同,故我将形式参数前的c都删掉了。
    Public Function collectdata(ByRef CO As Single, ByRef CO2 As Single, ByRef CH4 As Single, ByRef O2 As Single, ByRef N2 As Single) As Byte

        Dim s As String
        Dim x As Variant    On Error GoTo err_CollectData
        collectdata = 0
        Open "F:\new\开发中1\HWAcquisitionDataAndResultsB.txt" For Input As #1
        Do While Not EOF(1)
            Line Input #1, s
            If Len(Trim(s)) > 10 Then
                s = Replace(s, vbTab, " ") '替换tab
                s = Replace(s, " ", " ") '替换全角空格
                Do While InStr(s, "  ") <> 0
                    s = Replace(s, "  ", " ")
                Loop
                x = Split(s, " ")
                Select Case UCase(x(4))
                    Case "CO"
                        CO = CSng(x(5))
                    Case "CO2"
                        CO2 = CSng(x(5))
                    Case "CH4"
                        CH4 = CSng(x(5))
                    Case "O2"
                        O2 = CSng(x(5))
                End Select
            End If
        Loop
        N2 = 1 - CO - CO2 - CH4 - O2 / 10000    collectdata = 1
        Close #1
        '加了个exit sub,否则err_CollectData总是会被执行
        exit sub

    err_CollectData:
        MsgBox "error", vbOKOnly, "!"End Function=====================
    我用你的数据测试了一下,运行结果正确。请你再试试。
      

  5.   

    不好意思,不应该是exit sub,应该是exit function