Excel VBA错误438“;对象没有';“不支持此属性或方法”;
好的,我肯定是VBA的新手,但我正在学习。据我所知,我的代码没有理由不能正常运行,而且在过去也有过。不过,这个错误不断出现。我的目的是制作一张工作表,当您将一个人添加到主工作表时,它会自动更新其他工作表。代码似乎工作正常,但它突然抛出了这个错误,我不知道为什么。我环顾四周,但似乎没有一个解决方案与我的问题有着千丝万缕的联系。如果您能帮我找出错误的确切位置,我们将不胜感激 以下是调试器指出错误的地方:Excel VBA错误438“;对象没有';“不支持此属性或方法”;,vba,excel,Vba,Excel,好的,我肯定是VBA的新手,但我正在学习。据我所知,我的代码没有理由不能正常运行,而且在过去也有过。不过,这个错误不断出现。我的目的是制作一张工作表,当您将一个人添加到主工作表时,它会自动更新其他工作表。代码似乎工作正常,但它突然抛出了这个错误,我不知道为什么。我环顾四周,但似乎没有一个解决方案与我的问题有着千丝万缕的联系。如果您能帮我找出错误的确切位置,我们将不胜感激 以下是调试器指出错误的地方: Private Sub Worksheet_Activate() ThisWorkboo
Private Sub Worksheet_Activate()
ThisWorkbook.UpdateSheets (Week2)
End sub
这就是被调用的函数:
Public Function UpdateSheets(ByRef w As Worksheet)
HowManyPeople
With w
.Columns("A:W").HorizontalAlignment = xlCenter
Dim i As Integer
Dim j As Integer
For i = 1 To x
If IsEmpty(.Cells(i, 2)) Then
For j = 2 To 12
.Cells(i + 4, j).Borders.LineStyle = xlContinuous
If j <> 12 Then
.Cells(i + 4, j).Interior.ColorIndex = 2
.Cells(i + 4, j).Locked = False
Else
.Cells(i + 4, j).Interior.ColorIndex = 15
.Cells(i + 4, j).Locked = True
End If
If j = 2 Then
.Cells(i + 4, j).Value = Week1.Cells(i + 4, j)
Else
.Cells(i + 4, j).Value = "0"
End If
Next j
End If
Next i
i = x + 5
Do
For j = 2 To 12
.Cells(i, j).Borders.LineStyle = xlNone
.Cells(i, j).Interior.ColorIndex = 2
.Cells(i, j).Locked = True
.Cells(i, j).Value = ""
Next j
i = i + 1
Loop Until IsEmpty(.Cells(i, j))
End With
End Function
公共函数更新表(ByRef w作为工作表)
有多少人
与w
.列(“A:W”)。水平对齐=xlCenter
作为整数的Dim i
作为整数的Dim j
对于i=1到x
如果为空(.Cells(i,2)),则
对于j=2到12
.Cells(i+4,j).Borders.LineStyle=xlContinuous
如果j 12那么
.单元(i+4,j).内部.ColorIndex=2
.单元格(i+4,j).锁定=错误
其他的
.单元(i+4,j).内部颜色指数=15
.单元格(i+4,j).锁定=真
如果结束
如果j=2,则
.单元格(i+4,j).值=周1.单元格(i+4,j)
其他的
.单元格(i+4,j).Value=“0”
如果结束
下一个j
如果结束
接下来我
i=x+5
做
对于j=2到12
.Cells(i,j).Borders.LineStyle=xlNone
.Cells(i,j).Interior.ColorIndex=2
.Cells(i,j).Locked=True
.Cells(i,j).Value=“”
下一个j
i=i+1
循环直到等空(.Cells(i,j))
以
端函数
HOWMANYOPLE函数是一种基本的行计数方法。x是howmanyopele方法中给定值的公共工作簿变量。Week1和Week2是工作表的技术名称(未显示名称)解决方案
在sub中,更改此项:此工作簿.UpdateSheets(周2)
对此
callupdatesheets(thishworkbook.Worksheets(“Week2”))
问题的解释
见此工作簿
对象没有UpdateSheets
成员 请将thiswoolk.UpdateSheets(Week2)
替换为thiswoolk.UpdateSheets Week2
,并确保UpdateSheets位于此工作簿模块中。或者只需使用UpdateSheets Week2
如果在VBA中执行插入->模块,并将UpdateSheets(…)放入该模块,则不需要函数调用中的“ThisWorkbook.”前缀,您可以从任何工作表中调用它。您还应该在UpdateSheets内设置一个断点,如果它被调用,则逐步查找真正的错误行。有时Excel调试器会感到困惑,并将调用函数的行标记为错误点,而错误实际上在被调用函数中。您能否说明,如何设置“Week2”变量?我很难理解您的函数如何能够更改工作表上的任何内容。函数不能更改工作表中除调用它们的单元格以外的任何内容。SUB修改应用程序、书本、工作表和范围属性;函数返回的对象或值@Mark Fitzgerald并不完全正确。仅当顶级函数由Excel单元格公式调用时,才会阻止函数(以及调用的子函数和子子函数)更改Excel单元格。如果从UI控件、Excel事件或开发人员功能区上的宏按钮调用顶级子对象,则子对象加上任何被调用函数和被调用子对象都可以更改Excel单元格。我在各种函数中更改Excel单元格(在这些情况下,函数返回的是成功/失败代码)。