带有隐藏工作表名称的dynamic范围
我正在尝试为某些手动input创build归档选项。 我有这个工作,但是当存档被隐藏时,我遇到了一些问题。
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
有一个单元格计算有多less行与旧的date比2个月,然后旧数据正在清除(删除部分与pRow)。
我正在尝试不同的东西,现在sDumpRange
被修改,它不工作,但是当它,看起来像是在错误的数据input表中计算范围。 那十个被从错误的单元格复制到档案(Active Archive A11)。 当刷新时,数据被覆盖,input表也被清除。 现在键似乎在sDumpRange
计算中。
但是当存档被隐藏时,我遇到了一些问题。
这是显而易见的,因为它不再是ActiveSheet
,所以我一直在这个问题上
您需要完全限定范围对象。 例如,改变
Range("A2:E" & pRow).Delete Shift:=xlUp
至
Sheets(sDumpSheet).Range("A2:E" & pRow).Delete Shift:=xlUp
否则它会从错误的表中删除行。
同样,请在每个地方进行更改,并在上面提到的链接中joinbuild议。
隐藏工作表上的操作并不总是按预期完成。 这确实适用于PasteSpecial
。
你可以做些什么来克服这个问题是在你的脚本期间取消隐藏这些表,并在你的脚本完成后再隐藏它们。
在这个开始的时候:
Sheets(sDumpSheet).Visible = xlSheetVisible
而这最后:
Sheets(sDumpSheet).Visible = xlSheetHidden
也知道你可以通过将值更改为xlSheetVeryHidden
来隐藏从Excel中看不到的表单,这种方式只能从VBA代码或VBA窗口中取消隐藏…