我正在尝试为某些手动输入创建存档选项。我有那个工作,但是当隐藏存档时,我遇到了一些问题。
Sub Archive()
Dim sDumpRange As String
Dim sDumpSheet As String
sDumpSheet = "Active archive"
If Range("C6") <> Empty Then
pRow = Sheets(sDumpSheet).Range("I1")
If pRow > 1 Then
Range("A2:E" & pRow).Delete Shift:=xlUp
Else
End If
sDumpRange = "'" & Sheets("Active archive") & "'!" & "A" & Range("A5000").End(xlUp).Row + 1
' sDumpRange = "A" & Range("A5000").End(xlUp).Row + 1
Sheets("call-outs completed").Range("a10:e109").Copy
Worksheets(sDumpSheet).Range(sDumpRange).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("call-outs completed").Range("a10:a109").ClearContents
Sheets("call-outs completed").Select
Range("A11").Select
Else
MsgBox "Data not archived. Please select your name first and try again."
End If
End Sub
有一个单元格计算旧日期超过2个月的行数,然后清除旧数据(使用pRow删除部分)。
我正在尝试不同的东西,现在sDumpRange
被修改了它并没有起作用,但是当它出现时,它看起来就像计算错误的数据输入表中的范围一样。那是从错误的单元格(Active Archive A11)复制到存档的十个。刷新时,数据被覆盖,因为输入表也被清除。
密钥似乎现在在sDumpRange
计算范围内。
答案 0 :(得分:2)
但是当存档被隐藏时,我遇到了一些问题。
这很明显,因为它不再是ActiveSheet
因此我一直在努力THIS
您需要完全限定范围对象。例如,更改
Range("A2:E" & pRow).Delete Shift:=xlUp
到
Sheets(sDumpSheet).Range("A2:E" & pRow).Delete Shift:=xlUp
否则它将从错误的工作表中删除行。
同样,请在每个地方进行更改,并根据我上面提到的链接纳入建议。
答案 1 :(得分:0)
隐藏工作表的操作并不总是按预期完成。对于PasteSpecial
肯定是这样。
您可以采取哪些措施来解决这个问题,在脚本执行期间取消隐藏这些工作表,并在脚本完成后再将其隐藏起来。
在开头的时候:
Sheets(sDumpSheet).Visible = xlSheetVisible
最后这个:
Sheets(sDumpSheet).Visible = xlSheetHidden
还知道您可以通过将值更改为xlSheetVeryHidden
来隐藏从Excel中看到的工作表,这样您只能将其从VBA代码或VBA窗口取消隐藏...