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里的改改。尽量不要破坏下面的函数。
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里的改改。尽量不要破坏下面的函数。
序号 保留时间(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
这个是相关数据
序号 保留时间(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
这个是相关数据,想得道各个气体的浓度
序号 保留时间(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
这个是相关数据,想得道各个气体的浓度
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=====================
我用你的数据测试了一下,运行结果正确。请你再试试。