excel vba损坏文件 - 已锁定以进行编辑+删除的记录:从/xl/worksheets/sheet3.xml部分排序

时间:2018-03-08 08:45:21

标签: excel vba for-loop editing locked

我有一个文件,它有一个vba宏来粘贴和排序数据。 现在每次我保存文件,打开它时说它有问题=删除记录:从sheet3排序(即使很难,我的文件中没有sheet3),我的文件被损坏并被锁定以进行编辑&# 39; 。

提前感谢您的帮助。

'总和宏

范围(" A3&#34)。选择

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

'

End Sub

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

  

推荐阅读:How to avoid using Select in Excel VBA
最好远离以后选择并激活。

以下是您的代码执行上述原始内容所需的实际内容。

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推荐的解决方案显示了优点。