| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1012 人关注过本帖
标题:如果有几百个 If ..... Then ........... ........... End If ...
只看楼主 加入收藏
益西翁登
Rank: 4
等 级:业余侠客
威 望:1
帖 子:126
专家分:272
注 册:2010-2-22
结帖率:80%
收藏
已结贴  问题点数:10 回复次数:12 
如果有几百个 If ..... Then ........... ........... End If 在Command1超行数如何解决
如果有几百个:
  If ..... Then
   ...........
   ...........
   End If
放在Command1下会因为行数太多无法通过,应当怎么处理?是否可以建个模块放在里边?
下面是报错提示:
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 益西翁登 于 2013-9-13 10:19 编辑 ]
搜索更多相关主题的帖子: 如何 
2013-09-13 07:24
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
超行数???

没听过超行数的问题,只听过超行长的问题。

授人于鱼,不如授人于渔
早已停用QQ了
2013-09-13 08:40
益西翁登
Rank: 4
等 级:业余侠客
威 望:1
帖 子:126
专家分:272
注 册:2010-2-22
收藏
得分:0 
如果有几百个:
  If ..... Then
   ...........
   ...........
   End If
放在Command1下会太多无法通过,应当怎么处理?是否可以建个模块放在里边?
下面是报错提示:
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 益西翁登 于 2013-9-13 10:18 编辑 ]
2013-09-13 09:55
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
代码过才,估计是编译后一个段(64K)放不下吧。

如果 IF 能分组,每组能 明确一个返回值,
那么,每组放一个 函数吧,有返回值的那种。

没看到代码,无法给出解决方案。

授人于鱼,不如授人于渔
早已停用QQ了
2013-09-13 11:53
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:0 
呃,是否在函数中用了类似
dim t(1 to &h20000) as byte
之类的?
2013-09-13 15:15
益西翁登
Rank: 4
等 级:业余侠客
威 望:1
帖 子:126
专家分:272
注 册:2010-2-22
收藏
得分:0 
下边只是弄了两年的,我想弄个两百年的,照这个方法根本行不通,请教各位老师如何优化,我想弄成数组或模块应当怎么弄?盼高手解答,谢谢!
If Combo1.Text = "1924" And Combo2.Text = "1" Then
   y(0).Caption = "8"
   y(1).Caption = "9"
   y(2).Caption = "1"
   y(3).Caption = "2"
   y(4).Caption = "3"
   y(5).Caption = "4"
   y(6).Caption = "5"
   y(7).Caption = "6"
   y(8).Caption = "7"
End If

[ 本帖最后由 益西翁登 于 2013-9-14 06:47 编辑 ]
2013-09-13 17:01
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:0 
你难道看不出这些数据的规律吗?应该只要几句即可搞定的(应该不超过10行代码)。
2013-09-13 17:22
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
哪怕你怕出现错误,那也使用 文件保存这些数据时,不要使用 大量的 IF 块了。

数据文件,如果想简单一点,就用 TXT 文件。
文件结构如下:
每一行代表一串数据。
每串数据:如第一行:
1924,1,8,9,1,2,3,4,5,6,7
1924,2,7,8,9,1,2,3,4,5,6
......

--------------------------
程序代码:
Dim s1 As String
Dim s2 As String
Dim s3 As String
Dim sL As Long
Dim i As Long
Dim fj() As String

s1 = Combo1.Text & "," & Combo2.Text
sL = Len(s1)


Open "data.txt" For Input As #1

Do While EOF(1)
Line Input #1, s2
    s3 = Left(s2, sL)
    If s3 = s1 Then
        fj = Split(s2, ",")
        For i = 0 To 8
            y(i).Caption = fj(i + 2)
        Next i
        Exit Do
    End If
Close #1


------------------------
如果按6楼说的,那么简单的规律,那么直接写程序计算就是了。

授人于鱼,不如授人于渔
早已停用QQ了
2013-09-13 17:50
益西翁登
Rank: 4
等 级:业余侠客
威 望:1
帖 子:126
专家分:272
注 册:2010-2-22
收藏
得分:0 
谢谢风吹过b老师的解答,但我不想用调用文本的方式,盼望lowxiong老师给出代码答案,多谢二位老师!
2013-09-13 19:28
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:0 
'拷贝下列代码,10000年都行的,反正你这个不需要闰年的算法
Private Sub Command1_Click()
  Dim l As Long, a As Integer
  l = Val(Combo1) * 12 + Val(Combo2) - (1924 * 12 + 8)
  l = l Mod 9
  If l > 0 Then
    l = 9 - l
  Else
    l = Abs(l)
  End If
  For i = 0 To 8
    a = l + i + 1
    If a > 9 Then a = a - 9
    y(i).Caption = a
  Next
End Sub


[ 本帖最后由 lowxiong 于 2013-9-13 19:57 编辑 ]
2013-09-13 19:47
快速回复:如果有几百个 If ..... Then ........... ........... End ...
数据加载中...
 
   



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

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