Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1638|回复: 5

[已解决]求助为什么此条代码生成的各个试室信息不会替换掉上次多余的信息的

[复制链接]
发表于 2013-7-26 21:04 | 显示全部楼层 |阅读模式
求助为什么此条代码生成的各个试室信息不会替换,意思就是说例如第1次生在10试室的信息,第2次生成5次。按理说本次应该只有5个信息的信息,但是上次生在的第6--第10次的信息还是存在。怎么才能每次生成时都能替换掉上次的信息。(即是清空完上次的信息再生成)谢谢
求助各位.rar (33.04 KB, 下载次数: 6)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2013-7-26 21:09 | 显示全部楼层
代码如下:
Sub 生成抽签登记表()
    Const StartRow1 As Byte = 3
    Const JumpNext As Byte = 25
    Dim sRoom As String
    Dim LastRow1 As Long, StartRow2 As Long, LastRow2 As Long, i1 As Long, i2 As Long
   
    Application.ScreenUpdating = False
    With Sheet1
        LastRow1 = .Cells(.Rows.Count, "F").End(xlUp).Row
        If LastRow1 < StartRow1 Then Exit Sub
        StartRow2 = 3
        LastRow2 = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row
        If LastRow2 < StartRow2 + 2 Then Exit Sub
   
        Do While StartRow2 < LastRow2
            sRoom = GetNum(Sheet2.Range("A" & StartRow2))
            i2 = StartRow2 + 2
            For i1 = StartRow1 To LastRow1
                If .Cells(i1, "F").Value = sRoom Then
                    .Range(.Cells(i1, "B"), .Cells(i1, "E")).Copy Sheet2.Cells(i2, "B")
                    i2 = i2 + 1
                End If
            Next i1
            StartRow2 = StartRow2 + JumpNext
        Loop
    End With
    Application.ScreenUpdating = True
End Sub
Private Function GetNum(s As String) As String
    Dim retval As String
    Dim i As Integer
    retval = ""
    For i = 1 To Len(s)
        Select Case Mid(s, i, 1)
            Case "0" To "9"
            retval = retval + Mid(s, i, 1)
        End Select
    Next i
    GetNum = retval
End Function
回复

使用道具 举报

发表于 2013-7-26 21:20 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-7-26 21:29 | 显示全部楼层
zjdh 发表于 2013-7-26 21:20
看不明白,你在说什么!

你好感谢你的关注。我的意思是说。生成抽签登记表时,有时考生人数多有时考生人数少,上面附件只是例子。如果本次生成人数多的话比如安排20个试室。就有20个试室的信息在抽签登记表内,但今次人数少只生成10个试室。只能替换10个试室的内容。余下上次10次(11-20试室)的信息不被替换成空。因为本次只有10个试室的人。应该只有10个试室有信息不应该再有20个试室的信息。谢谢
回复

使用道具 举报

发表于 2013-7-26 21:50 | 显示全部楼层    本楼为最佳答案   
这容易啊,先清除一下就可以啦!
Sub 生成抽签登记表()
    ......
    Application.ScreenUpdating = False
    For i = 0 To 60
      Sheets(2).Cells(i * 25 + 5, 2).Resize(20, 4).ClearContents
    Next

    With Sheet1
        LastRow1 = .Cells(.Rows.Count, "F").End(xlUp).Row
        If LastRow1 < StartRow1 Then Exit Sub
     ........
End Sub

评分

参与人数 1 +3 收起 理由
qinhuan66 + 3 很给力!谢谢

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-7-26 22:08 | 显示全部楼层
zjdh 发表于 2013-7-26 21:50
这容易啊,先清除一下就可以啦!
Sub 生成抽签登记表()
    ......

老师非常感谢你。能否帮改一下。抽签登记表里面的内容全部由代码生成。谢谢
http://www.excelpx.com/thread-305967-1-1.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 06:26 , Processed in 0.478991 second(s), 18 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表