注册 登录
编程论坛 VB6论坛

VSFlexGrid网格中的数据转换成双精度数据类型显示类型不匹配

vbcaonia 发布于 2023-10-25 20:07, 1379 次点击
VSFlexGrid网格中的数据转换成双精度数据类型显示类型不匹配

Private Sub Command5_Click()
Dim Sv(7), Av(7) As Double '定义两个双精度的数组
Dim i As Long, j As Long
For i = 1 To 7 '行
    j = 2 '列起点
    While (Not IsEmpty(Form1.VSFlexGrid1.TextMatrix(i, j)))
   
         Sv(j - 1) = CDbl((Form1.VSFlexGrid1.TextMatrix(i, j))) '将单元格内的数据转换成双精度数据类型
      
        ......

上面程序,将VSFlexGrid网格中的数据转换成双精度数据类型,Sv(j - 1) = CDbl((Form1.VSFlexGrid1.TextMatrix(i, j)))显示类型不匹配,请老师修改,谢谢!


3 回复
#2
wlbwxd2023-10-25 21:37
修正的代码:
Private Sub Command5_Click()
    Dim Sv(1 To 7) As Double '定义双精度的数组并指定元素个数和类型
    Dim Av(1 To 7) As Double '定义双精度的数组并指定元素个数和类型
    Dim i As Long, j As Long   
    For i = 1 To 7 '行
        j = 2 '列起点
        While (Not IsEmpty(Form1.VSFlexGrid1.TextMatrix(i, j)))
            Sv(j - 1) = CDbl(Form1.VSFlexGrid1.TextMatrix(i, j)) '将单元格内的数据转换成双精度数据类型
            j = j + 1 '递增列索引
        Wend        
        ' 使用Sv数组中的数据进行操作...        
    Next i
End Sub
修复了以下问题:
数组 Sv 和 Av 的声明中指定了元素个数和双精度数据类型。
将 j 的起始值设为2,以便与网格的列索引对应。
将 CDbl((Form1.VSFlexGrid1.TextMatrix(i, j))) 改为 CDbl(Form1.VSFlexGrid1.TextMatrix(i, j)),移除了多余的括号。
添加了递增列索引 j = j + 1,以在循环中处理下一个单元格。
#3
vbcaonia2023-10-25 22:29
回复 2楼 wlbwxd
老师你好,程序经测试还是不行,可能是Form1.VSFlexGrid1.TextMatrix(i, j)表示的不是单元格数据吧...
#4
cwa99582023-10-27 14:23
Form1.VSFlexGrid1.TextMatrix(i, j)单元格里的数据是字符型,处理的时候不需要转换,或者用Val()函数转换。



[此贴子已经被作者于2023-10-27 14:26编辑过]

1