Excel 如何使用不同工作手册中的sub
在PERSONAL.XLSB工作簿中,我有以下代码:Excel 如何使用不同工作手册中的sub,excel,vba,error-handling,Excel,Vba,Error Handling,在PERSONAL.XLSB工作簿中,我有以下代码: Public Sub Password(ByVal Target As Range) a = "" For n = 1 To Len(Target) a = a & "*" Next n Target.NumberFormat = """" & a & """;""" & a & """;""" & a & """;""" & a
Public Sub Password(ByVal Target As Range)
a = ""
For n = 1 To Len(Target)
a = a & "*"
Next n
Target.NumberFormat = """" & a & """;""" & a & """;""" & a & """;""" & a & """"
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Info.Range("AA9").Address Then
Workbooks("PERSONAL.XLSB").Password Target
End If
End Sub
在我的新工作簿中,我有以下代码:
Public Sub Password(ByVal Target As Range)
a = ""
For n = 1 To Len(Target)
a = a & "*"
Next n
Target.NumberFormat = """" & a & """;""" & a & """;""" & a & """;""" & a & """"
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Info.Range("AA9").Address Then
Workbooks("PERSONAL.XLSB").Password Target
End If
End Sub
我一直收到一个错误,上面写着,
编译错误:属性使用无效
以下是如何从个人工作簿运行宏:
Application.Run "PERSONAL.XLSB!Password", Target
[编辑]
值得注意的是,您可以这样做,而不是通过循环来构建*字符串:
Public Sub Password(ByVal Target As Range)
Dim sMask as String
sMask = Mid(WorksheetFunction.Rept(";""" & String(Len(Target.Value), "*") & """", 4), 2)
Target.NumberFormat = sMask
End Sub
tigeravatar显示的Application.Run方法动态运行良好(即在运行时解决所有问题),是快速调用某些过程的最简单方法 如果您想访问许多过程,或者使用不止一个函数或子函数,可以添加对Personal.xlsb项目名称的引用(通过工具>引用)。您应该将Personal.xlsb的VBA项目代码名称从默认的“VBAProject”重命名为“PersonalLibrary”或其他唯一的名称。然后将引用添加到PersonalLibrary 然后,您可以完全访问标准模块、任何工作表和类中的所有公共函数和子函数,可以提前绑定到类,并可以访问字段、属性和事件 此外,还有intellisense和标准编译时检查的好处,如检查方法签名(也就是说,函数或子函数的参数对应于它应该是什么)和静态类型 (注意,对于类,您需要使用Personal.xlsb的标准模块中的函数来返回任何类的实例,因为它们不能由外部项目“创建”) 在您的情况下,一旦添加了引用,您就可以访问它,只需
PersonalLibrary.Password(target)