Excel精英培训网

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

[已解决]为什吗一次删除不了呀

[复制链接]
发表于 2011-10-2 09:57 | 显示全部楼层 |阅读模式
用新建excel 打开 新11文件, 然后判断新11的 C列中 左边第一个字符不等于 “退” 的数据全部删除。

但是不知道为什么 , 一次性删除不了?

请各位帮忙看看

咋回事呀

谢谢了

最佳答案
2011-10-2 11:56
回复 zss427607 的帖子

  1. Private Sub CommandButton1_Click()
  2.     Dim str, wk, A, B, i, s

  3.     str = "新11.xls"
  4.     On Error Resume Next
  5.     Workbooks(str).Close
  6.     On Error GoTo 0

  7.     Set wk = Workbooks.Open(ThisWorkbook.Path & "" & str)
  8.     With wk.Sheets("sheet1")
  9.         A = .Range("a1:c" & .Range("a65536").End(xlUp).Row)
  10.         ReDim B(1 To UBound(A), 1 To UBound(A, 2))
  11.         For i = 1 To UBound(A)
  12.             If Left(A(i, 3), 1) = "退" Then
  13.                 s = s + 1
  14.                 B(s, 1) = A(i, 1)
  15.                 B(s, 2) = A(i, 2)
  16.                 B(s, 3) = A(i, 3)
  17.             End If
  18.         Next i
  19.         If s > 0 Then
  20.             .Cells.Clear
  21.             .Range("a1").Resize(s, UBound(B, 2)) = B
  22.         End If
  23.     End With
  24.     Set wk = Nothing

  25.     Application.DisplayAlerts = False
  26.     Workbooks(str).Close True
  27. End Sub
复制代码
这样的,可以吗{:041:}

11.rar

200.89 KB, 下载次数: 44

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-10-2 11:56 | 显示全部楼层    本楼为最佳答案   
回复 zss427607 的帖子

  1. Private Sub CommandButton1_Click()
  2.     Dim str, wk, A, B, i, s

  3.     str = "新11.xls"
  4.     On Error Resume Next
  5.     Workbooks(str).Close
  6.     On Error GoTo 0

  7.     Set wk = Workbooks.Open(ThisWorkbook.Path & "" & str)
  8.     With wk.Sheets("sheet1")
  9.         A = .Range("a1:c" & .Range("a65536").End(xlUp).Row)
  10.         ReDim B(1 To UBound(A), 1 To UBound(A, 2))
  11.         For i = 1 To UBound(A)
  12.             If Left(A(i, 3), 1) = "退" Then
  13.                 s = s + 1
  14.                 B(s, 1) = A(i, 1)
  15.                 B(s, 2) = A(i, 2)
  16.                 B(s, 3) = A(i, 3)
  17.             End If
  18.         Next i
  19.         If s > 0 Then
  20.             .Cells.Clear
  21.             .Range("a1").Resize(s, UBound(B, 2)) = B
  22.         End If
  23.     End With
  24.     Set wk = Nothing

  25.     Application.DisplayAlerts = False
  26.     Workbooks(str).Close True
  27. End Sub
复制代码
这样的,可以吗{:041:}
回复

使用道具 举报

 楼主| 发表于 2011-10-2 14:32 | 显示全部楼层
爱版  x

谢谢了

可以,用循环为啥不行呀?
回复

使用道具 举报

发表于 2011-10-2 16:38 | 显示全部楼层
本帖最后由 zyjs029 于 2011-10-2 16:40 编辑

不知楼主的意思是这样的么  (不过这样的问题在excel里就直接可以操作了 不需要vba的)
Sub a()
Dim x As Integer
For x = 2 To 10000
  If Left(Cells(x, 3), 1) <> "退" Then
   Cells(x, 3).ClearContents
  End If
Next x
End Sub

回复

使用道具 举报

 楼主| 发表于 2011-10-2 16:51 | 显示全部楼层
zyjs029 发表于 2011-10-2 16:38
不知楼主的意思是这样的么  (不过这样的问题在excel里就直接可以操作了 不需要vba的)
Sub a()
Dim x As ...

我是用得循环判断 删除的

但是不知为什么, 运行一次后 还是有数据 未删除 ?
回复

使用道具 举报

发表于 2011-10-2 16:56 | 显示全部楼层
那你上传你的附件+代码瞅瞅 是不是没循环完还是怎么回事
回复

使用道具 举报

 楼主| 发表于 2011-10-2 17:20 | 显示全部楼层
zyjs029 发表于 2011-10-2 16:56
那你上传你的附件+代码瞅瞅 是不是没循环完还是怎么回事

老大  附件 及 代码

在一楼呀
回复

使用道具 举报

发表于 2011-10-2 18:05 | 显示全部楼层

  1. Private Sub CommandButton1_Click()

  2.     Application.DisplayAlerts = False
  3.     Application.ScreenUpdating = False
  4.     Set ws = Workbooks.Open(ThisWorkbook.Path & "" & "新11.xls")
  5.     Debug.Print Sheets(Sheets.Count).Name    '返回Sheet3
  6.     Debug.Print Sheets(Sheets.Count).[a65536].End(xlUp).Row    '返回1

  7. '    For i = 2 To ws.Sheets(Sheets.Count).[a65536].End(xlUp).Row
  8. '        If ws.Sheets(Sheets.Count).Cells(i, 3) <> "" And _
  9. '           Left(ws.Sheets(Sheets.Count).Cells(i, 3), 1) <> "退" Then
  10. '            ws.Sheets(Sheets.Count).Activate
  11. '            ws.Sheets(Sheets.Count).Cells(i, 3).Select
  12. '            Selection.EntireRow.Delete
  13. '        End If
  14. '    Next i

  15.     '实际相当于
  16.     For i = 2 To 1
  17.     Next i
  18.     '循环刚要开始,就结束了,因为i的值已经是2了,超过1了,即不执行循环。
  19.     ActiveWorkbook.Save
  20.     ActiveWorkbook.Close
  21.     Sheets("Sheet1").Activate
  22.     Sheets("Sheet1").Range("A1").Select
  23. End Sub
复制代码
{:041:}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 14:07 , Processed in 0.162352 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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