ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1951|回复: 5

[2007] 求助各位大佬!——excel2007-vba循环终值为变量时遇到问题!!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-1-10 16:56 | 显示全部楼层 |阅读模式
本帖最后由 zbh_ronaldo 于 2014-1-10 16:56 编辑

求助excel2007-vba循环终值为变量时遇到问题.rar (262.25 KB, 下载次数: 1) 我在2007中循环时遇到循环变量终值为变量时不及时传递(或改变)值的情况,但在2003中运行没问题,紧急求助各位兄弟姐妹帮忙分析分析!

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-1-10 17:09 | 显示全部楼层
有好心人么,自己先顶一下

TA的精华主题

TA的得分主题

发表于 2014-1-10 17:11 | 显示全部楼层
用的VBA?好像没有找到代码在哪个地方呢

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-1-10 17:13 | 显示全部楼层
Sub test()
    Dim y As Integer, T As Integer, W As Integer, x As Integer, h As Integer, Mr As Integer, MySearch1 As Range, MySearch2 As Range, MySR1 As Integer, Firstaddr1 As Variant, Firstaddr2 As Variant
    Sheets(3).Select
    With ActiveWorkbook.Sheets(3)
        Mr = .Cells(65336, 3).End(xlUp).Row
        For x = 2 To 5
            For h = 2 To Mr
                If .Cells(h, 12) <> "" Then Rows(h).Delete Shift:=xlUp
                Mr = .Cells(65336, 3).End(xlUp).Row
            Next h
        Next x

        Sheets(2).Select
        T = 2
        For x = 1 To 100
            For h = T To Mr
                With Sheets(2).Columns(1)
                    Set MySearch1 = .Find(What:=Sheets(3).Cells(h, 3), After:=.Cells(1, 1), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, _
                                          SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
                    If Not MySearch1 Is Nothing And Sheets(3).Cells(h, 12) <> "循环标识" Then
                        Firstaddr1 = MySearch1.Address
                        Set MySearch2 = .FindNext(After:=MySearch1)
                        y = h + 1
                        W = 0
                        Do While Not MySearch2 Is Nothing And MySearch2.Address <> Firstaddr1
                            MySR1 = MySearch2.Row
                            With Sheets(3)
                                .Rows(h).Copy
                                .Rows(h).Insert Shift:=xlUp
                                .Cells(y, 3).Interior.ColorIndex = 39
                                .Cells(y, 6) = Sheets(2).Cells(MySR1, 4)
                                .Cells(y, 9) = Sheets(2).Cells(MySR1, 5)
                                .Cells(y, 10) = Sheets(2).Cells(MySR1, 6)
                                .Cells(y, 11) = Sheets(2).Cells(MySR1, 3)
                                .Cells(y, 12) = "循环标识"
                                W = W + 1
                            End With
                            Set MySearch2 = .FindNext(After:=MySearch2)
                        Loop
                        Set MySearch2 = Nothing
                        Set MySearch1 = Nothing
                    End If
                End With
                T = y + W
                Mr = .Cells(65336, 3).End(xlUp).Row
            Next h
            T = y + W
            Mr = .Cells(65336, 3).End(xlUp).Row
        Next x
        'MsgBox h & "_" & Mr
    End With
End Sub

上述代码中,若没有“ For x = 1 To 100”这个语句,则不会从sheets(2)中搜索出符合sheets(3)中的证券权益,为何?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-1-15 09:09 | 显示全部楼层
是vba啊,代码见附件Test20140110.bas,上述问题简化起来就是:循环时,如果终值是变动的,则可能无法完全实现循环目的,除非在原循环基础上再重复几遍。比如根据某一条件删除某一列表中的特定几行,当循环终值取.cells(65336,1).end(xlup).row时就会出现一次删不干净的情形,只有重复循环几遍才能删除干净。

TA的精华主题

TA的得分主题

发表于 2014-1-15 15:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zbh_ronaldo 发表于 2014-1-15 09:09
是vba啊,代码见附件Test20140110.bas,上述问题简化起来就是:循环时,如果终值是变动的,则可能无法完全实 ...

代码没看,但一般删除单元格时从下往上删不会出问题。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 00:35 , Processed in 0.031375 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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