Excel精英培训网

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

[已解决]求hwc2ycy老師指點

[复制链接]
发表于 2013-6-1 11:20 | 显示全部楼层 |阅读模式
保存老師跳是否兼容對話框


Private Sub CommandButton2_Click()
Dim i As Integer
    Dim j As Integer
    On Error GoTo ErrorHandler
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
   
    With Me.ListBox1

    For i = (.ListCount - 1) To 5 Step -1
                If .Selected(i) Then
                    Worksheets(.List(i)).Copy
      
        ActiveWorkbook.SaveAs Filename:=Replace(Range("i5").Value, ".prt", ".xls"), FileFormat:=xlExcel8
        ActiveWorkbook.Close True
   
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
   
ErrorHandler:
    Debug.Print Err.Number & Err.Description
    Resume Next
End If
Next
End With
End Sub
Private Sub ListBox1_Click()
End Sub
Private Sub UserForm_Initialize()
    Dim sht
    For Each sht In ActiveWorkbook.Sheets
        Me.ListBox1.AddItem sht.Name
    Next
End Sub


這個就不會跳
Sub hwc2ycy( )
    Dim i As Byte
    On Error GoTo ErrorHandler
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    For i = 6 To Worksheets.Count
        Worksheets(i).Copy
      
        ActiveWorkbook.SaveAs Filename:=Replace(Range("i5").Value, ".prt", ".xls"), FileFormat:=xlExcel8
        ActiveWorkbook.Close True
    Next
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    MsgBox "OK"
ErrorHandler:
    Debug.Print Err.Number & Err.Description
    Resume Next
End Sub




最佳答案
2013-6-1 15:48
  1. Private Sub CommandButton2_Click()
  2.     Dim i As Integer
  3.     Dim j As Integer
  4.     On Error GoTo ErrorHandler
  5.     Application.ScreenUpdating = False
  6.     Application.DisplayAlerts = False

  7.     With Me.ListBox1
  8.         For i = (.ListCount - 1) To 0 Step -1
  9.             If .Selected(i) Then
  10.                 Worksheets(.List(i)).Copy
  11.                 ActiveWorkbook.SaveAs Filename:=Replace(Range("i5").Value, ".prt", ".xls"), FileFormat:=xlExcel8
  12.                 ActiveWorkbook.Close True
  13.             End If
  14.         Next
  15.     End With
  16.     Application.ScreenUpdating = True
  17.     Application.DisplayAlerts = True

  18.     Exit Sub
  19. ErrorHandler:
  20.     Debug.Print Err.Number & Err.Description
  21.     Err.Clear
  22.     Resume Next

  23. End Sub
复制代码
这两句放错位置了。
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-6-1 12:20 | 显示全部楼层
回复

使用道具 举报

发表于 2013-6-1 12:21 | 显示全部楼层
Application.DisplayAlerts = False
这个属性值为FALSE后,可以在宏运行时禁止显示提示和警告消息;
当出现需要用户应答的消息时,Microsoft Excel 将选择默认应答。
回复

使用道具 举报

发表于 2013-6-1 12:23 | 显示全部楼层
另外Range("i5").Value跳的时候你要观察下,对应的工作表的I5单元格内的内容,万一没有.prt可替换,文佚名 估计又要出差子了。
回复

使用道具 举报

发表于 2013-6-1 12:26 | 显示全部楼层
你按F8单步调试看看
  1. Private Sub CommandButton2_Click()
  2.     Dim i As Integer
  3.     Dim j As Integer
  4.     Dim strTemp As String
  5.     On Error GoTo ErrorHandler
  6.     Application.ScreenUpdating = False
  7.     Application.DisplayAlerts = False

  8.     With Me.ListBox1

  9.         For i = (.ListCount - 1) To 5 Step -1
  10.             If .Selected(i) Then
  11.                 Worksheets(.List(i)).Copy
  12.                 strTemp = Replace(Range("i5").Value, ".prt", ".xls")
  13.                 Debug.Print strTemp
  14.                 ActiveWorkbook.SaveAs Filename:=strTemp, FileFormat:=xlExcel8
  15.                 ActiveWorkbook.Close True
  16.                 Application.ScreenUpdating = True
  17.                 Application.DisplayAlerts = True
  18.             End If
  19.         Next
  20.     End With
  21.     Exit Sub

  22. ErrorHandler:
  23.     Debug.Print Err.Number & Err.Description
  24. End Sub

  25. Private Sub UserForm_Initialize()
  26.     Dim sht
  27.     For Each sht In ActiveWorkbook.Sheets
  28.         Me.ListBox1.AddItem sht.Name
  29.     Next
  30. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
yl.fu + 3 節日快樂

查看全部评分

回复

使用道具 举报

发表于 2013-6-1 12:27 | 显示全部楼层
既然是针对工作表操作,下面的属性可以直接用WORKSHEETS。
另外,变量J是做什么用的,也没有看到使用了。
  1. Private Sub CommandButton2_Click()
  2.     Dim i As Integer
  3.     Dim strTemp As String
  4.     On Error GoTo ErrorHandler
  5.     Application.ScreenUpdating = False
  6.     Application.DisplayAlerts = False

  7.     With Me.ListBox1

  8.         For i = (.ListCount - 1) To 5 Step -1
  9.             If .Selected(i) Then
  10.                 Worksheets(.List(i)).Copy
  11.                 strTemp = Replace(Range("i5").Value, ".prt", ".xls")
  12.                 Debug.Print strTemp
  13.                 ActiveWorkbook.SaveAs Filename:=strTemp, FileFormat:=xlExcel8
  14.                 ActiveWorkbook.Close True
  15.                 Application.ScreenUpdating = True
  16.                 Application.DisplayAlerts = True
  17.             End If
  18.         Next
  19.     End With
  20.     Exit Sub

  21. ErrorHandler:
  22.     Debug.Print Err.Number & Err.Description
  23. End Sub

  24. Private Sub UserForm_Initialize()
  25.     Dim sht As Worksheet
  26.     For Each sht In ActiveWorkbook.Worksheets
  27.         Me.ListBox1.AddItem sht.Name
  28.     Next
  29. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
yl.fu + 3 願您返老還童,天天開心

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-6-1 13:33 | 显示全部楼层
hwc2ycy 发表于 2013-6-1 12:27
既然是针对工作表操作,下面的属性可以直接用WORKSHEETS。
另外,变量J是做什么用的,也没有看到使用了。

工作表有宏就會,沒宏就不會跳,不知和這有沒關係
wrewer.zip (19.47 KB, 下载次数: 3)
回复

使用道具 举报

 楼主| 发表于 2013-6-1 13:41 | 显示全部楼层
2013-06-01_134034.jpg 這裡好像沒用啊
回复

使用道具 举报

发表于 2013-6-1 14:29 | 显示全部楼层
有宏的话,07开始,最后存成XLSM格式。
但是保存为XLS应该不会提示的吧。
我呆会试试。
回复

使用道具 举报

 楼主| 发表于 2013-6-1 14:44 | 显示全部楼层
hwc2ycy 发表于 2013-6-1 14:29
有宏的话,07开始,最后存成XLSM格式。
但是保存为XLS应该不会提示的吧。
我呆会试试。

會提示的,但您上次寫的那個保存全部就不會,有時增加的我想這樣單獨選取另存就會跳,還會打開每個工作表.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 17:09 , Processed in 0.461531 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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