我在我的 vba 程序中引用范围时遇到问题。以下代码片段显示了我的原始代码:
With Worksheets("Overall 6 mo")
.Columns("A:G").ColumnWidth = 13.57
.Range("A1:Z100").Rows.RowHeight = 15
.Columns("F:G").NumberFormat = "0.00%"
.Range("B3:G3") = Worksheets("TEMPLATE").Range("A3:F3").Value
.Range("F4:G100") = Worksheets("TEMPLATE").Range("E4:F100").Formula
.Range("A1").NumberFormat = "@"
.Range("A1") = .Name
End With
这将在通过第 3 行后抛出“运行时 1004 应用程序定义或对象定义错误”。然后,我改变了
.Range("A1:Z100").Rows.RowHeight = 15
至
.Rows.RowHeight = 15
关键是使我需要使用的单元格的高度为 15,因此更改不会损害我的程序。现在,它将允许这样做,但随后在下一行抛出相同的错误,我再次引用一个范围。所以我想弄清楚为什么它不允许我使用 .range ?或者至少我该如何解决?
更新:我开始意识到我不能在我的工作簿中的任何地方使用 .Range 方法(不仅仅是在上面的实例中)。什么会使我无法在任何地方使用 .Range?
UPDATE2:它现在将不再让我在第二行使用 .Columns 方法。我什么都没做,只是通过了几次。这件事有什么问题?
UPDATE3:似乎当我重新启动excel时,它允许我运行一次工作表“Overall 6 mo”代码,然后每次都开始抛出错误。我已经包含了工作表其余部分的代码。
Option Explicit
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim shIndex As Integer
Dim rowIndex As Integer
Dim myLastRow As Integer
Dim shLastRow As Integer
Dim col As Integer
myLastRow = Worksheets("Overall 6 mo").Cells(65536, 1).End(xlUp).Row
' Format Worksheet
Sheets("Overall 6 mo").Cells.Clear
With Worksheets("Overall 6 mo")
.Columns.ColumnWidth = 13.57
.Rows.RowHeight = 15
.Columns("F:G").NumberFormat = "0.00%"
.Range("B3:G3") = Worksheets("TEMPLATE").Range("A3:F3").Value
.Range("F4:G100") = Worksheets("TEMPLATE").Range("E4:F100").Formula
.Range("A1").NumberFormat = "@"
.Range("A1") = .Name
End With
' Clear current sheet data
myLastRow = Worksheets("Overall 6 mo").Cells(65536, 2).End(xlUp).Row
Worksheets("Overall 6 mo").Range(Cells(4, 1), Cells(myLastRow, 7)).Clear
' Compile data from last six months and add to and display on "Overall 6 mo" sheet
For shIndex = Worksheets.Count - 5 To Worksheets.Count
Worksheets(shIndex).Activate
myLastRow = Worksheets("Overall 6 mo").Cells(65536, 2).End(xlUp).Row
shLastRow = Worksheets(shIndex).Cells(65536, 1).End(xlUp).Row
Worksheets("Overall 6 mo").Cells(myLastRow + 1, 1).Value _
= MonthName(Month(CDate(Worksheets(shIndex).Name)), False)
Worksheets(shIndex).Range("A4:D" & shLastRow) _
.Copy (Worksheets("Overall 6 mo").Cells(myLastRow + 1, 2))
Next shIndex
' Call UpdateChart to clear and re-add Quality and Cost charts to wks
Call UpdateCharts(Worksheets("Overall 6 mo").Index)
Worksheets("Overall 6 mo").Activate
Application.ScreenUpdating = True
结束子