我一直在尝试运行一个遍历C列的脚本,并删除单元格中文本左侧或右侧的任何空格。当我运行它时,我得到一个关于set rr的错误(ss,uu,vv以及当我尝试运行它时)。
这是调试器发现错误“运行时错误'1004'的地方:应用程序定义的错误或对象定义的错误。
Set rr = Worksheets("EOD").Range(Cells(2, 3), Cells(100, 3))
我还在下面提供了完整的代码,以防万一可能提供更好的见解。我曾经使用过JS和PHP,但VBA让我感到困惑。
提前感谢您提供的任何帮助。
中号
Sub Workbook_Open()
Dim r As Range
Dim s As Range
Dim t As Range
Dim u As Range
Dim v As Range
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim e As Integer
Dim rr As Range
Dim ss As Range
Dim tt As Range
Dim uu As Range
Dim vv As Range
Set rr = Worksheets("EOD").Range(Cells(2, 3), Cells(100, 3))
Set ss = Worksheets("9AM Report").Range(Cells(2, 3), Cells(100, 3))
Set uu = Worksheets("1PM CST").Range(Cells(2, 3), Cells(100, 3))
Set vv = Worksheets("3PM ST").Range(Cells(2, 3), Cells(100, 3))
Set tt = Worksheets("11AM Report").Range(Cells(2, 3), Cells(100, 3))
For Each r In rr
r = Trim(r)
a = a + 1
If a = 199 Then Call RefreshAllPivotTables
If a > 200 Then End
Next
For Each s In ss
s = Trim(s)
b = b + 1
If b = 199 Then Call RefreshAllPivotTables
If b > 200 Then End
Next
For Each t In tt
t = Trim(t)
c = c + 1
If c = 199 Then Call RefreshAllPivotTables
If c > 200 Then End
Next
For Each u In uu
u = Trim(u)
d = d + 1
If d = 199 Then Call RefreshAllPivotTables
If d > 200 Then End
Next
For Each v In vv
v = Trim(v)
e = e + 1
If e = 199 Then Call RefreshAllPivotTables
If e > 200 Then End
Next
End Sub
Sub RefreshAllPivotTables()
Dim PT As PivotTable
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
For Each PT In WS.PivotTables
PT.RefreshTable
Next PT
Next WS
End Sub
答案 0 :(得分:6)
当其他工作表处于活动状态时,我能够重现您的错误。您需要像Cells
一样完全定义Range
的工作表位置。
而不是:
Set rr = Worksheets("EOD").Range(Cells(2, 3), Cells(100, 3))
尝试:
Dim wks1 As Worksheet
Set wks1 = Worksheets("EOD")
Set rr = wks1.Range(wks1.Cells(2, 3), wks1.Cells(100, 3))