Excel精英培训网

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

如果用for each循环可以从i=1前面开始删除

[复制链接]
发表于 2017-4-15 21:52 | 显示全部楼层 |阅读模式
如果用for each循环可以从i=1前面开始删除


如果用for each循环可以从i=1前面开始删除.png

如果用for each循环可以从i=1前面开始删除.rar

8.51 KB, 下载次数: 10

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-4-15 23:01 | 显示全部楼层
为什么要用FOR EACH,然后还要用个变量来递减(或递增),直接用FOR TO好了。
  1. Sub DeleteMu()
  2. Dim i As Integer
  3. On Error Resume Next
  4. Application.DisplayAlerts = False
  5. For i = 1 To 10
  6.   Sheets("高一" & i).Delete
  7. Next i
  8. Application.DisplayAlerts = True
  9. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2017-4-15 23:02 | 显示全部楼层
大灰狼1976 发表于 2017-4-15 23:01
为什么要用FOR EACH,然后还要用个变量来递减(或递增),直接用FOR TO好了。

用for  each如何写
回复

使用道具 举报

发表于 2017-4-15 23:24 | 显示全部楼层
顺便说下,用FOR EACH就是为了不用递增(或递减)变量,或者不确定循环次数时使用。
  1. Sub DeleteMu()
  2. Dim i As Integer
  3. Dim mysh As Worksheet
  4. For Each mysh In Sheets
  5.   i = i + 1
  6.   If mysh.Name = "高一" & i Then
  7.     mysh.Delete
  8.   End If
  9. Next mysh
  10. End Sub
复制代码

评分

参与人数 1 +9 收起 理由
laoau138 + 9 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-4-15 23:38 | 显示全部楼层
大灰狼1976 发表于 2017-4-15 23:24
顺便说下,用FOR EACH就是为了不用递增(或递减)变量,或者不确定循环次数时使用。

程序不对了,一个也删除不了
回复

使用道具 举报

发表于 2017-4-15 23:46 | 显示全部楼层
laoau138 发表于 2017-4-15 23:38
程序不对了,一个也删除不了

这样
  1. Sub mydelete()
  2. Application.DisplayAlerts = False
  3. Dim i As Integer
  4. Dim sh As Worksheet
  5. For Each sh In Sheets
  6.   If sh.Name <> "Sheet1" Then
  7.     sh.Delete
  8.   End If
  9. Next
  10. Application.DisplayAlerts = True
复制代码


评分

参与人数 1 +6 收起 理由
laoau138 + 6 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-4-16 09:06 | 显示全部楼层

这样写不行,如果还有多个其他表,怎么办?

从高一1开始删除,且一定要用for  each语句实现
回复

使用道具 举报

发表于 2017-4-16 09:10 | 显示全部楼层
我4楼的代码确实是错的,抱歉,太武断!
回复

使用道具 举报

 楼主| 发表于 2017-4-16 09:15 | 显示全部楼层
本帖最后由 laoau138 于 2017-4-16 09:16 编辑
大灰狼1976 发表于 2017-4-16 09:10
我4楼的代码确实是错的,抱歉,太武断!

你还有什么办法

sub  无算法()
on error resume next
i=1
for each sh in sheets
      if i=10 then exit sub
      sheets("高一"&i).delete
       i=i+1
next
end sub

一直删除到高一6,从高一七开始出错  为什么要如何改


回复

使用道具 举报

发表于 2017-4-16 09:16 | 显示全部楼层
for each循环是不能更改顺序的,如果工作表名是倒序排列,那么必须递减删除,除非再加一层循环。
另,不知道你这个需求是出于什么目的,纯学习可以理解,实际运用的话感觉思路完全不在正轨上。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 08:42 , Processed in 0.319171 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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