ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

急求帮忙!auto_open+二级循环,恳请各位老师帮忙!非常感谢!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-8-30 09:26 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Dear :
          非常感谢您的关注,首先附件中要实现的是一个利用“加载项”循环删除另一工作薄指定行的程序:
在auto_open的工作簿,“客户名称”sheet之外的所有工作表中,客户名所在列上,DELETE除指定客户名的行。运行程序上没有出现中断,但是就是只能删除其中一个工作表中内容,衷心请求帮忙!谢谢!

以下是代码源:

Dim AR, R1&, a&, S1 As Range, n As String
Sub auto_open()
  
    Dim mCaidan As Menu
    MenuBars(xlWorksheet).Reset
    Set mCaidan = MenuBars(xlWorksheet).Menus.Add("system")
    With mCaidan.MenuItems
        .Add "循环工作表", "循环工作表"
    End With
End Sub
Sub 循环工作表()
On Error Resume Next
n$ = ActiveWorkbook.Name
n = Sheets("客户名称").[a1].Value
For Each sh In Workbooks("n$").Sheets
    If sh.Name <> "客户名称" Then
    sh.Activate
    Call 删除指定内容
End If
Next
End Sub

Sub 删除指定内容()
R1 = Cells(Rows.Count, 2).End(xlUp).Row
   AR = Cells(1, 2).Resize(R1)
   For a = 5 To R1
   If AR(a, 1) <> n Then
   If S1 Is Nothing Then
   Set S1 = Rows(a).EntireRow
  Else
   Set S1 = Union(S1, Rows(a).EntireRow)
   End If
   End If
   Next
   If Not S1 Is Nothing Then S1.Delete: Set S1 = Nothing
[a1].Select
End Sub

TA的精华主题

TA的得分主题

发表于 2013-8-30 09:56 | 显示全部楼层
重复发帖了。没有附件不能测试代码。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-30 10:10 | 显示全部楼层
老师,您好!请查收附件!非常感谢!

test.zip

331.32 KB, 下载次数: 21

TA的精华主题

TA的得分主题

发表于 2013-8-30 12:11 | 显示全部楼层
仅供参考

  1. Dim AR, R1&, a&, S1 As Range, n As String, WB As Workbook
  2. Sub auto_open()
  3.      Dim mCaidan As Menu
  4.      MenuBars(xlWorksheet).Reset
  5.      Set mCaidan = MenuBars(xlWorksheet).Menus.Add("system")
  6.      With mCaidan.MenuItems
  7.          .Add "循环工作表", "循环工作表"
  8.      End With
  9. End Sub


  10. Sub 循环工作表()
  11. On Error Resume Next
  12. Set WB = Workbooks("test--.xlsx")
  13. 'n$ = ActiveWorkbook.Name
  14. n = WB.Sheets("客户名称").[a1].Value
  15. For Each sh In WB.Sheets
  16.       If sh.Name <> "客户名称" Then
  17.         sh.Activate
  18.         Call 删除指定内容
  19.     End If
  20. Next sh
  21. End Sub


  22. Sub 删除指定内容()
  23. R1 = Cells(Rows.Count, 2).End(xlUp).Row
  24. AR = Cells(1, 2).Resize(R1)
  25. For a = R1 To 5 Step -1
  26.     If AR(a, 1) <> n Then
  27.         If S1 Is Nothing Then
  28.             Set S1 = Rows(a).EntireRow
  29.             S1.Delete
  30.         Else
  31.             Set S1 = Union(S1, Rows(a).EntireRow)
  32.         End If
  33.     End If
  34. Next a
  35. [a1].Select
  36. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-30 12:48 | 显示全部楼层
老师,您好!谢谢您的帮忙,但是如果限定了Set WB = Workbooks("test--.xlsx")
那每一次的文件名都要作出修改,我本意就是不想修改被加载的文件名。

TA的精华主题

TA的得分主题

发表于 2013-8-30 13:26 | 显示全部楼层
tczone 发表于 2013-8-30 12:48
老师,您好!谢谢您的帮忙,但是如果限定了Set WB = Workbooks("test--.xlsx")
那每一次的文件名都要作出修 ...

你的代码是写在另一个文件
要刪除特定文件的内容

如果同时有多个Excel文件开启
不指定如何知道要刪哪个文件内容?
如果依你原来的代码,只会在代码所在Excel文件运作。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-30 13:38 | 显示全部楼层
mineshine 发表于 2013-8-30 13:26
你的代码是写在另一个文件
要刪除特定文件的内容

"n$ = ActiveWorkbook.Name
For Each sh In Workbooks("n$").Sheets”
您好!我源代码里用了上述的语句定位了被加载的文件,这样写会实现我想要的效果吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-30 13:39 | 显示全部楼层
蓝桥玄霜 发表于 2013-8-30 09:56
重复发帖了。没有附件不能测试代码。

老师,您好!请查收附件!非常感谢!
test.zip


TA的精华主题

TA的得分主题

发表于 2013-8-30 13:43 | 显示全部楼层
tczone 发表于 2013-8-30 13:38
"n$ = ActiveWorkbook.Name
For Each sh In Workbooks("n$").Sheets”
您好!我源代码里用了上述的语句 ...

你可以在源代码下,按F8逐步执行,
可以看到
n$ = ActiveWorkbook.Name
加载后得到的文件是哪一个

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-30 14:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
mineshine 发表于 2013-8-30 13:43
你可以在源代码下,按F8逐步执行,
可以看到
n$ = ActiveWorkbook.Name

您好!在源代码指向的是test--的文件哦,请求老师再帮忙分析一下!谢谢了!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 10:08 , Processed in 0.043429 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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