【问题标题】:excel vba corrupts file - locked for editing + Removed Records: Sorting from /xl/worksheets/sheet3.xml partexcel vba 损坏文件 - 锁定编辑 + 删除记录:从 /xl/worksheets/sheet3.xml 部分排序
【发布时间】:2018-03-08 08:45:20
【问题描述】:

我有一个文件,其中包含一个用于粘贴和排序数据的 vba 宏。 现在每次我保存文件时,打开它时说它有问题=删除记录:从 sheet3 排序(即使我的文件中没有 sheet3),我的文件被损坏并“锁定编辑”。

提前感谢您的帮助。

' sum 宏

范围(“A3”)。选择

ActiveCell.FormulaR1C1 = "=Pivot!R[3]C"
Range("A3").Select
Selection.AutoFill Destination:=Range("A3:A1500"), Type:=xlFillDefault
Range("A3:A1500").Select
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFill Destination:=Range("A3:ab1500"), Type:=xlFillDefault
Range("A3:ab1500").Select
Range("AC3").Select
 Range("AC3").Select
ActiveCell.FormulaR1C1 = "=RC[-12]+RC[-10]+RC[-8]+RC[-6]+RC[-4]+RC[-2]+RC[-14]+RC[-16]+RC[-20]+RC[-18]+RC[-22]+RC[-24]"
Range("AC3").Select
Selection.AutoFill Destination:=Range("AC3:AC1500")
Range("AC3:aC1500").Select
ActiveWindow.SmallScroll Down:=60
Range("ac3").Select
Range("A3:ac1500").Select
Selection.copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Range("ac2").Select
Application.CutCopyMode = False
    Range("ac2").Select
ActiveWorkbook.Worksheets("Summary table").Sort.SortFields.Add Key:=Range( _
    "ac2:ac1500"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
    xlSortNormal
With ActiveWorkbook.Worksheets("Summary table").Sort
    .SetRange Range("A2:ac1500")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
   Range("A3").Select

'

结束子

【问题讨论】:

  • 一个好的开始是自己检查并删除所有不必要的代码行,如重复项、.SmallScroll 等。您可能还希望确定您的排序数据是否有标题。跨度>

标签: excel vba for-loop editing locked


【解决方案1】:

尝试“文件”->“选项”->“高级”->向下滚动查看标题,“计算此工作簿时”->勾选“更新其他文档的链接”->“确定”,然后尝试执行你的代码。

【讨论】:

    【解决方案2】:

    推荐阅读:How to avoid using Select in Excel VBA
    不如早点摆脱Select and Activate。

    这是您的代码执行上述原始代码所必需的。

    Option Explicit
    
    Sub summmit()
        With ActiveWorkbook.Worksheets("Summary table")
            .Activate
            .Range("A3:AB1500").FormulaR1C1 = "=Pivot!R[3]C"
            .Range("AC3:AC1500").FormulaR1C1 = _
              "=RC[-24]+RC[-22]+RC[-20]+RC[-18]+RC[-16]+RC[-14]+RC[-12]+RC[-10]+RC[-8]+RC[-6]+RC[-4]+RC[-2]"
            .Range("A3:ac1500") = .Range("A3:ac1500").Value
            With .Range("A2:ac1500")
                .Cells.Sort Key1:=.Columns(29), Order1:=xlDescending, _
                            Orientation:=xlTopToBottom, Header:=xlYes
            End With
            .Range("A3").Select
        End With
    End Sub
    

    似乎没有任何“破坏工作簿”的操作。想到两件事:a) 刷新 Pivot 工作表上的数据透视表,b) 开始用 xlA1 而不是记录的 xlR1C1 参考样式编写公式。此外,arun v 推荐的解决方案也很有价值。

    【讨论】:

      猜你喜欢
      • 2013-12-31
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      相关资源
      最近更新 更多