Excel 带有If语句的WorkbookOpen函数
我正在尝试编写一个代码,当我打开一个文件时,该文件的名称中有某个内容,并且在单元格中有一个特定的值(下面的代码) 首先,有可能同时使用这两个语句吗?一个是在“文件打开时”验证条件,另一个是需要打开文件才能找到答案 如果没有,最好的方法是什么 当我只使用部分包含某些内容的文件名的条件时,它会起作用,但当我尝试应用这两个条件时,它会忽略第二个条件(单元格值)Excel 带有If语句的WorkbookOpen函数,excel,vba,Excel,Vba,我正在尝试编写一个代码,当我打开一个文件时,该文件的名称中有某个内容,并且在单元格中有一个特定的值(下面的代码) 首先,有可能同时使用这两个语句吗?一个是在“文件打开时”验证条件,另一个是需要打开文件才能找到答案 如果没有,最好的方法是什么 当我只使用部分包含某些内容的文件名的条件时,它会起作用,但当我尝试应用这两个条件时,它会忽略第二个条件(单元格值) 选项显式 将事件监视器应用程序作为应用程序公开 私有子工作簿_Open() 设置MonitorApp=应用程序 端接头 专用子监控器App_工
选项显式
将事件监视器应用程序作为应用程序公开
私有子工作簿_Open()
设置MonitorApp=应用程序
端接头
专用子监控器App_工作簿打开(ByVal Wb作为工作簿)
将文本变暗为字符串
暗淡的迈塞尔山脉
Set myCell=thisvoolk.ActiveSheet.Range(“A1”)
Text=“文件的部分名称”
如果UCase(左(Wb.Name,Len(Text))=UCase(Text)和myCell.Value“Example”,那么
“代码”
如果结束
端接头
我希望只有当这两个条件都为真时,代码才会运行,但即使
myCell.Value=“Example”
是wb
或此工作簿中的myCell
,代码也会运行?根据您的描述,它听起来像是在wb
中。如果工作表在编译时存在于此工作簿中
,只需给它一个有意义的(名称)
属性(F4打开“属性”工具窗口),然后您可以在代码中使用该名称-例如,如果(名称)
是Sheet1
然后您可以执行Sheet1.Range(“A1”)。Value=42
;如果(名称)
是MyAwesomeSheet
,则可以执行MyAwesomeSheet.Range(“A1”).Value=42
,并且无需从工作表
集合中取消对这些对象的引用;只有在处理运行时创建的工作表和/或不在此工作簿中的工作表时,您才需要这样做。我已经尝试过了,工作正常。确保您的单元格具有代码所比较的精确值“Example”。正如@BigBen所指出的,在设置myCell时,我应该使用Wb而不是ThisWorkbook,这就成功了
Option Explicit
Public WithEvents MonitorApp As Application
Private Sub Workbook_Open()
Set MonitorApp = Application
End Sub
Private Sub MonitorApp_WorkbookOpen(ByVal Wb As Workbook)
Dim Text As String
Dim myCell As Range
Set myCell = ThisWorkbook.ActiveSheet.Range("A1")
Text = "Partial Name of File"
If UCase(Left(Wb.Name, Len(Text))) = UCase(Text) And myCell.Value <> "Example" Then
'Code'
End If
End Sub