使用Worksheets.Activate语法时下标超出范围错误

时间:2019-12-05 23:53:24

标签: excel vba

我编写了以下代码,并在调试时得到了针对工作表(“程序映射表”)行的错误“下标超出范围”。激活


Application.DisplayAlerts = False 'Don't display alert
Worksheets("Program Mapping Sheet").Activate 'Set the active worksheet
Sheets("Program Mapping Sheet").Cells.Clear

Worksheets("Copied Raw Data").Activate 'Set the active worksheet
Worksheets("Copied Raw Data").UsedRange.Copy 'Copy the data

Worksheets("Program mapping sheet").Activate 'Set the active worksheet
Worksheets("Program mapping sheet").Range("A1").PasteSpecial xlPasteValues

ThisWorkbook.RefreshAll 'Refresh all the pivot tables


If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData

Application.DisplayAlerts = True 'Display Alerts
Worksheets("Hide").Activate 'Set the active worksheet
Worksheets("Hide").Range("A1").Select
End Sub 


2 个答案:

答案 0 :(得分:0)

可以这样简化:

Dim progMapSheet As Worksheet
Dim copiedRawData As Worksheet

Set progMapSheet = ThisWorkbook.Worksheets("Program mapping sheet")
Set copiedRawData = ThisWorkbook.Worksheets("Copied Raw Data")

Application.DisplayAlerts = False 'Don't display alert

progMapSheet.Cells.Clear

progMapSheet.Range("A1").Resize(copiedRawData.UsedRange.Rows.Count, copiedRawData.UsedRange.Columns.Count).Value = copiedRawData.UsedRange.Value 'Copy the data

ThisWorkbook.RefreshAll 'Refresh all the pivot tables

If progMapSheet.FilterMode Then progMapSheet.ShowAllData

Application.DisplayAlerts = True 'Display Alerts
ThisWorkbook.Worksheets("Hide").Activate 'Set the active worksheet
ThisWorkbook.Worksheets("Hide").Range("A1").Select

答案 1 :(得分:0)

我试图将您的问题复制到新的工作簿中,并且执行的代码没有问题,如果您遇到此错误,我将检查工作表的名称并确保它们与您的代码对齐。

顺便说一句,请尝试将代码中的名称复制并粘贴到工作表名称中,反之亦然。