我想使用MSChart将两个长度不相同的数组在图形上表示出来,为什么总出错??代码如下:
num1是X()的数组长度,num2是Y()的数组长度
加入X()中有12个点,而Y()中有24个点,我使用如下的代码得到的曲线怎么总是两天长度相同阿??
Sub drew2(X() As Double, Y() As Double, num1 As Integer, num2 As Integer)
Dim row As Integer, axisID As Integer, i As Integer, N As Integer
With Me.MSChart1
.ColumnCount = 2
.RowCount = num2
'短的那条线
.Column = 1
.ColumnLabel = "实测"
For row = 1 To num1
.row = row
.Data = X(row)
.RowLabel = row
Next row
'长的那条
.Column = 2
.ColumnLabel = "还原"
For row = 1 To num2
.row = row
.Data = Y(row)
.RowLabel = row
Next row
End With
end sub
请问高手这是怎么回事???
num1是X()的数组长度,num2是Y()的数组长度
加入X()中有12个点,而Y()中有24个点,我使用如下的代码得到的曲线怎么总是两天长度相同阿??
Sub drew2(X() As Double, Y() As Double, num1 As Integer, num2 As Integer)
Dim row As Integer, axisID As Integer, i As Integer, N As Integer
With Me.MSChart1
.ColumnCount = 2
.RowCount = num2
'短的那条线
.Column = 1
.ColumnLabel = "实测"
For row = 1 To num1
.row = row
.Data = X(row)
.RowLabel = row
Next row
'长的那条
.Column = 2
.ColumnLabel = "还原"
For row = 1 To num2
.row = row
.Data = Y(row)
.RowLabel = row
Next row
End With
end sub
请问高手这是怎么回事???
解决方案 »
- vb连接sql 数据库 求个老师!
- combo box与recordset问题!
- 打印多页的程序:
- 多张表中具有相同编号的记录合成一条记录。要如何实现啊???
- 关于用manifest文件实现XP风格的问题
- 借!借!借!借!借!借!借!借!借!借!借!借!借!借!
- 模式窗体上文本框里输入的东西想在不关闭模式窗体的情况下怎么才能让程序继续执行父窗的代码?
- 程序中删除mdb文件
- 谁会HOOK的问题????给100分!
- 把AA表中的所有记录找出来(包括所有字段内容),但要求是BB字段的值不能有相同的(即把BB字段的值相同的记录给略过),SQL语句如何写?
- 请问有 包含 label的 透明 + textbox的自动转行 的 控件吗?
- VB安装问题!
X() As Double, Y() As Double 别用参数传递,设置为全局变量,
num1 As Integer, num2 As Integer 可用 UBound 代替,于是,你的过程将变为:Sub drew2
...
...
end sub试试看。
可还是不行,明明X()只要把他的12个坐标画出来就可以了,可莫名其妙的出来还是24个点画出的线!
这是怎么回事?
还有就是当X,Y的长度相同是,我在增大Y的长度,画出来的曲线,X就只有一般,Y是全部曲线,可X中没有数据的后半部分全部默认为0,横坐标的后半部分全是X的值!
这又是怎么回事?
Private Sub Command1_Click()
Dim XX(10) As Double, YY(20) As Double
For i = 0 To 10
XX(i) = 20 * (1 + Sin(6.28 * i / 10))
Next i
For i = 0 To 20
YY(i) = 20 * (1 + Sin(6.28 * i / 20))
Next i
Call drew2(XX, YY, 10, 20)End Sub
Sub drew2(X() As Double, Y() As Double, num1 As Integer, num2 As Integer)
On Error Resume Next
Dim row As Integer, axisID As Integer, i As Integer, N As Integer
With Me.MSChart1
.ColumnCount = 2
.RowCount = num2
'短的那条线
.Column = 1
.ColumnLabel = "实测"
For row = 1 To num2
.row = row
.Data = X(IIf(row < 11, row, 0))
.RowLabel = row
Next row
'长的那条
.Column = 2
.ColumnLabel = "还原"
For row = 1 To num2
.row = row
.Data = Y(row)
.RowLabel = row
Next row
End With
End Sub两条正弦曲线画得不错^_^。
'短的那条线
.Column = 1
.ColumnLabel = "实测"
For row = 1 To num2
.row = row
.Data = X(IIf(row <= num1, row, 0))
.RowLabel = row
Next row
好像和我说的有点出入
你的短的曲线里面后十个点还是有数据的都是X(0)=20
我的意思很简单就是让后面的那十个点生成的曲线消失掉,只有Y()生成的曲线和X()前十个数据生成的一半曲线!
你的我靠过去还是两断完整的曲线啊??
使用 MSCHART1.GRIDDATA.SETDATA 函数 将NULLFLAG 设为TRUE 即可。
Sub drew2(X() As Double, Y() As Double, num1 As Integer, num2 As Integer)
Dim row As Integer, axisID As Integer, i As Integer, N As Integer
With Me.MSChart1
.ColumnCount = 2
.RowCount = num2
'短的那条线
.Column = 1
.ColumnLabel = "实测"
For row = 1 To num1
.DataGrid.SetData row, 1, x(row), False
.RowLabel = row
Next row
For row = num1 + 1 To num2
.DataGrid.SetData row, 1, 0, True
Next row
'长的那条
.Column = 2
.ColumnLabel = "还原"
For row = 1 To num2
.row = row
.Data = Y(row)
.RowLabel = row
Next row
End With
end sub
you are the best men