这一段如何优化

okok588 2009-01-21 02:54:17
Private Sub Command18_Click()
Dim i As Integer, j As Integer, k As Integer

MSFlexGrid1.Rows = 1

For i = 1 To Len(Text2.Text)
For j = 1 To Len(Text3.Text)
For k = 1 To Len(Text4.Text)
MSFlexGrid1.AddItem MSFlexGrid1.Rows & vbTab & Mid(Text2.Text, i, 1) & Mid(Text3.Text, j, 1) & Mid(Text4.Text, k, 1)
Next
Next
Next
End Sub
这段代码运行超过了2秒钟,并且3个Text里的数字也就都是0123456789,该如何优化他,让他运行的快一点
...全文
55 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
myqoo 2009-01-22
  • 打赏
  • 举报
回复
别的不说,光是那么多次数的Text读取浪费不少了
Tiger_Zhao 2009-01-21
  • 打赏
  • 举报
回复
逐个 AddItem 太慢,如下提高 1~2 个数量级。
Private Sub Command18_Click()
Dim i As Long, j As Long, k As Long, l As Long
MSFlexGrid1.Rows = Len(Text2.Text) * Len(Text3.Text) * Len(Text3.Text) + 1
l = 0
For i = 1 To Len(Text2.Text)
For j = 1 To Len(Text3.Text)
For k = 1 To Len(Text4.Text)
l = l + 1
MSFlexGrid1.TextMatrix(l, 1) = l
MSFlexGrid1.TextMatrix(l, 2) = Mid(Text2.Text, i, 1) & Mid(Text3.Text, j, 1) & Mid(Text4.Text, k, 1)
Next
Next
Next
End Sub
zdingyun 2009-01-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 okok588 的帖子:]
Private Sub Command18_Click()
Dim i As Integer, j As Integer, k As Integer

MSFlexGrid1.Rows = 1

For i = 1 To Len(Text2.Text)
For j = 1 To Len(Text3.Text)
For k = 1 To Len(Text4.Text)
MSFlexGrid1.AddItem MSFlexGrid1.Rows & vbTab & Mid(Text2.Text, i, 1) & Mid(Text3.Text, j, 1) & Mid(Text4.Text, k, 1)
Next
Next

[/Quote]
LZ:运行FOR NEXT循环前后改变MSFlexGrid1的属性:
Private Sub Command18_Click()
Dim i As Integer, j As Integer, k As Integer
MSFlexGrid1.Rows = 1
MSFlexGrid1.Visible = False
'Text1 = Timer
For i = 1 To Len(Text2.Text)
For j = 1 To Len(Text3.Text)
For k = 1 To Len(Text4.Text)
MSFlexGrid1.AddItem MSFlexGrid1.Rows & vbTab & Mid(Text2.Text, i, 1) & Mid(Text3.Text, j, 1) & Mid(Text4.Text, k, 1)
Next
Next
Next
MSFlexGrid1.Visible = True
'Text5 = Timer - Val(Text1)
End Sub
SYSSZ 2009-01-21
  • 打赏
  • 举报
回复
你的代码就已经很好了.

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧