Office中国论坛/Access中国论坛

标题: 如何转换成for ..next i这样的形式(问题已经解决) [打印本页]

作者: su_xx    时间: 2008-1-21 16:17
标题: 如何转换成for ..next i这样的形式(问题已经解决)
原程序如下:

Private Sub Form_Load()
Dim i As Integer

  If (Me.Ctl1月.C) Then
     Me.Ctl1月合计.C
  Else
     Me.Ctl1月合计.C
  End If

If (Me.Ctl2月.C) Then
     Me.Ctl2月合计.C
  Else
     Me.Ctl2月合计.C
  End If
  
   If (Me.Ctl3月.C) Then
     Me.Ctl3月合计.C
  Else
     Me.Ctl3月合计.C
  End If
  
   If (Me.Ctl4月.C) Then
     Me.Ctl4月合计.C
  Else
     Me.Ctl4月合计.C
  End If
  
   If (Me.Ctl5月.C) Then
     Me.Ctl5月合计.C
  Else
     Me.Ctl5月合计.C
  End If


End Sub想要改变成:所有的数据换成I,本人试了好几种都说程序错误

Private Sub Form_Load()
Dim i As Integer
for i=1 to 5

'所有的数据换成变量i,本人试了好几种都说程序错误,我知道现成这种加"i"肯定是错误,就是想把上面N个if语句改成for ..next i这样,请高手帮忙改一下,谢谢了

     If (Me.Ctl"i"月.C) Then
     Me.Ctl"i"月合计.C
  Else
     Me.Ctl"i"月合计.Ci"月])"
  End If
next i
End Sub

[ 本帖最后由 su_xx 于 2008-1-22 15:34 编辑 ]
作者: 咱家是猫    时间: 2008-1-21 17:39
Private Sub Form_Load()
    Dim I As Byte
    For I = 1 To 5
        If Me.Controls("Ctl" & I & "月").C Then
            Me.Controls("Ctl" & I & "月").C
        Else
            Me.Controls("Ctl" & I & "月").C & I & "月])"
        End If
    Next I
      
End Sub

[ 本帖最后由 咱家是猫 于 2008-1-21 17:40 编辑 ]
作者: 咱家是猫    时间: 2008-1-21 17:41
奇怪了,每次发出来代码都变呢?
作者: rjacky    时间: 2008-1-21 17:41
既然都不上传例子,想要医生隔空把脉,那么我也来个隔山打牛,开创收费新纪元好了


[attach]28142[/attach]
作者: 咱家是猫    时间: 2008-1-21 17:42
再发一次试试
Private Sub Form_Load()

    Dim I As Byte
    For I = 1 To 5
        If Me.Controls("Ctl" & I & "月").ControlSource = "" Then
            Me.Controls("Ctl" & I & "月").ControlSource = "=0"
        Else
            Me.Controls("Ctl" & I & "月").ControlSource = "=sum([" & I & "月])"
        End If
    Next I
      
End Sub
作者: rjacky    时间: 2008-1-21 17:42
晕,转眼间前面又多出只猫咪
作者: 咱家是猫    时间: 2008-1-21 17:43
R兄的收费估计又要泡汤了.
作者: rjacky    时间: 2008-1-21 17:45
你看我,用图片多好

一来不会改变格式,二来让楼主又能手工敲一遍加强印象和记忆
作者: 咱家是猫    时间: 2008-1-21 17:45
原来没看清楼主的代码,现做以修正
Private Sub Form_Load()

    Dim I As Byte
    For I = 1 To 5
        If Me.Controls("Ctl" & I & "月").ControlSource = "" Then
            Me.Controls("Ctl" & I & "月合计").ControlSource = "=0"
        Else
            Me.Controls("Ctl" & I & "月合计").ControlSource = "=sum([" & I & "月])"
        End If
    Next I
      
End Sub
作者: rjacky    时间: 2008-1-21 17:59
[attach]28144[/attach]
作者: su_xx    时间: 2008-1-21 18:44
谢谢楼上的2位版主,哪个发贴代码不知道为什么会变,我第一楼改了8次,在Discuz!代码模式里不会变,在所见既所午模式里发表就会变,不知道什么原因

版主你所说的例子是不是包括窗体,数据源都要的mdb文件??我还以为是程序例子。

[ 本帖最后由 su_xx 于 2008-1-21 18:47 编辑 ]
作者: rjacky    时间: 2008-1-21 21:40
是啊,遇上复杂的问题,最好还是上传MDB文件,这样方便测试答案是否有效,不需完整或真正的,简化一下即可
作者: su_xx    时间: 2008-1-22 14:32
昨天下班,不能上传,根据版主的例子,还是一样有问题,和我原先出的问题一样,我把mdb上传,请版主查看一下,问题出在哪?
作者: rjacky    时间: 2008-1-22 15:28
你的控件名称和你写的不一样

  1. Dim I As Byte
  2. For I = 1 To 5
  3. If Me.Controls(I & "月").ControlSource = "" Then
  4. Me.Controls(I & "月合计").ControlSource = "=0"
  5. Else
  6. Me.Controls(I & "月合计").ControlSource = "=sum([" & I & "月])"
  7. End If
  8. Next I
复制代码

作者: su_xx    时间: 2008-1-22 15:33
谢谢rjacky版主,问题已经解决




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3