将串口采集的数据保存到excel表格中,每按一次按键,数据保存到下一行,但是前面行数的数据也变为最新值

程序如下:

Private Sub Command1_Click()
Timer2.Interval = Val(Text9.Text * 1000)
If Timer2.Enabled = False Then
Timer2.Enabled = True
End If
If Val(Text9.Text) = 0 Then
choice = MsgBox("未设置时间间隔!", vbYes + vbExclamation + vbDefaultButton1, "")
Exit Sub
End If
n = mysheet.UsedRange.Rows.Count
For n = 2 To n + 1

mysheet.Cells(1, 1).Value = "1#采集点"
mysheet.Cells(1, 2).Value = "2#采集点"
mysheet.Cells(1, 3).Value = "3#采集点"
mysheet.Cells(1, 4).Value = "4#采集点"
mysheet.Cells(1, 5).Value = "5#采集点"
mysheet.Cells(1, 6).Value = "6#采集点"
mysheet.Cells(1, 7).Value = "7#采集点"
mysheet.Cells(1, 8).Value = "8#采集点"
mysheet.Cells(1, 9).Value = "数据采集时间"

mysheet.Cells(n, 1).Value = Text1.Text
mysheet.Cells(n, 2).Value = Text2.Text
mysheet.Cells(n, 3).Value = Text3.Text
mysheet.Cells(n, 4).Value = Text4.Text
mysheet.Cells(n, 5).Value = Text5.Text
mysheet.Cells(n, 6).Value = Text6.Text
mysheet.Cells(n, 7).Value = Text7.Text
mysheet.Cells(n, 8).Value = Text8.Text
mysheet.Cells(n, 9).Value = Text11.Text
mybook.Save
Next n

End Sub

第1个回答  2013-10-23
1/修改变量:
n = mysheet.UsedRange.Rows.Count + 1

取消For..循环,你每按一次就保存一行,循环什么呢?

2/调整:
mysheet.Cells(1, 1).Value = "1#采集点"
mysheet.Cells(1, 2).Value = "2#采集点"
mysheet.Cells(1, 3).Value = "3#采集点"
mysheet.Cells(1, 4).Value = "4#采集点"
mysheet.Cells(1, 5).Value = "5#采集点"
mysheet.Cells(1, 6).Value = "6#采集点"
mysheet.Cells(1, 7).Value = "7#采集点"
mysheet.Cells(1, 8).Value = "8#采集点"
mysheet.Cells(1, 9).Value = "数据采集时间"
这些不用放到循环里来。
第2个回答  2013-10-23
你用了 for next 循环 不就是这样吗 就是这样处理的没错啊 把循环去掉……
你这个循环是 把所有行的的数据 都写一遍……
要把新数据写在最下面一行 就 把下段的 cells(n…… 改成 cells(n+1……
不要循环!!!!本回答被提问者采纳
相似回答