| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9146 人关注过本帖
标题:二维数组赋值的问题
取消只看楼主 加入收藏
sunduke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-5-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
二维数组赋值的问题
大家好,问题是这样的,我要用多个文本框的方式对我想要的不定行数的数组a(n,4)进行赋值,因为n是我程序中的一个变量不确定为多少,参考一个教程的代码如下,代码用的是对a(3,4)数组的赋值,然而我用redim的方法无法实现,详细代码如下,期望高手把我改改,或者还是我出发的思维就错了,有别的更加好的方法?
程序代码:
Private Sub Command1_Click()
Static a(3, 4) As Integer     '声明 数组
Static i As Integer
For j = 0 To 4        '取文本框控件数组接收到的数据存入二维数组中
  a(i, j) = Val(Text1(j).Text)     '一次提取一行
Next j
For j = 0 To 4
  Text1(j) = ""       '提取一行后清空文本框
Next j
If i = 2 Then          '将要结束时提示可以打印
  Command1.Caption = "打印"
End If
If i = 3 Then
  Label1.Caption = "输入结束,开始处理数据" '数据都提取完毕后提示处理打印
  Command1.Caption = "打印"
  Print: Print: Print: Print
  Print "您 输入的矩阵为:"
  For k = 0 To 3                      '以3行4列的矩阵方式输出数组元素
    For j = 0 To 4
       Print Tab(6 * j); a(k, j);     '在窗体上有间隔的输出
    Next j
    Print
  Next k
  Exit Sub
Else
  i = i + 1
  Label1.Caption = "请您 输入第" & i + 1 & "行数据"     '提示继续输入
  Text1(0).SetFocus                   '光标重新定位
End If
End Sub

Private Sub Text1_GotFocus(Index As Integer) '当文本框控件数组中任何一个控件失去焦点时发生
n = Index
Text1(n).SelStart = 0
Text1(n).SelLength = Len(Text1(n).Text)     '事件发生时文本框内的内容全部选中
End Sub
搜索更多相关主题的帖子: 文本框 
2016-04-22 08:46
sunduke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-5-8
收藏
得分:0 
回复 3楼 风吹过b
变为动态数组后,redim perseve或者redim什么的都不行,改了后就只能输出一行数组,多行的不行了。也不能实现我反复用一组文本框输入数据,然后得出二维数组,不过还是谢谢了!
2016-04-22 09:22
sunduke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-5-8
收藏
得分:0 
回复 2楼 xiangyue0510
用datagrid的方法我想到了存入数据库,然后再变为二维数组,不过貌似也麻烦,就是想找个能直接输入生成二维数组,用inputbox其实可以实现,但是感觉太low了,我后面要进行特别复杂的数据公式运算,而且可以数组行数很多,inputbox就太麻烦了。
不知道有没有用datagrid直接变数组的方法,因为datagrid的删除和添加数据的确很方便。
2016-04-22 09:28
sunduke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-5-8
收藏
得分:0 
已经实现了,说下方法和思路吧。
    因为要编一个公司内部的计算软件,需要手动输入一个动态二维数组,用inputbox方法繁琐,用text文本框输入成为一个二维数据(自己没看明白,也没成果,因为涉及到要用同一个文本框组反复对数组赋值,不知道如何操作)。然后发现datagrid这个控件本身来说就有添加删除修改的功能(样子类似excel),datagrid是直接跟数据库相连的,然后把数据库变为二维数组,即可实现我的要求了。
前面连接数据库的代码就不写了,也很简单。
Rst.MoveLast    ''前面定义Rst = New ADODB.Recordset
i = Rst.RecordCount - 1
j = Rst.Fields.Count - 1
'3 利用循环赋值
ReDim A(i, j) As Variant
For m = 0 To i
If m > 0 Then
Rst.MoveNext
If Rst.EOF Then
Rst.MoveLast
End If
Else
Rst.MoveFirst
End If
For n = 0 To j
A(m, n) = Rst.Fields(n)
Print A(m, n);
Next n
Print
Next m
Cnn.Close
2016-04-22 09:58
快速回复:二维数组赋值的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026819 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved