Excel VBA:Workbookfunction如果下拉列表更改,则使用不同的图纸调用Sub
我有一个工作表函数,一旦E4中的下拉菜单更改了工作表债务明细,它就会自动调用CopyValues。此宏仅在工作表名称为“Debt Detail”时运行,否则将退出Sub。此宏至今运行良好。我添加了另一张名为“借款人声明”的表格,如果E4在表格借款人声明中发生变化,该表格应称为“借款人声明” 我需要修改现有工作簿函数以完成此操作。 以下是现有代码。对于如何实现这一目标的任何帮助和建议,我们将不胜感激:Excel VBA:Workbookfunction如果下拉列表更改,则使用不同的图纸调用Sub,excel,vba,Excel,Vba,我有一个工作表函数,一旦E4中的下拉菜单更改了工作表债务明细,它就会自动调用CopyValues。此宏仅在工作表名称为“Debt Detail”时运行,否则将退出Sub。此宏至今运行良好。我添加了另一张名为“借款人声明”的表格,如果E4在表格借款人声明中发生变化,该表格应称为“借款人声明” 我需要修改现有工作簿函数以完成此操作。 以下是现有代码。对于如何实现这一目标的任何帮助和建议,我们将不胜感激: Private Sub Workbook_SheetChange(ByVal sh As Ob
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
Application.ScreenUpdating = False
If sh.Name <> "Debt Detail" Then Exit Sub
If Target.Address = Range("$E$4").Address Then
Call CopyValues
Range("A1").ClearOutline
Range("d2").Select
End If
Application.ScreenUpdating = True
End Sub
私有子工作簿(ByVal sh作为对象,ByVal目标作为范围)
Application.ScreenUpdating=False
如果sh.名称为“债务明细”,则退出Sub
如果Target.Address=范围($E$4”)。则
调用CopyValues
范围(“A1”)。清晰轮廓
范围(“d2”)。选择
如果结束
Application.ScreenUpdating=True
端接头
关于代码的一些建议:
- 缩进代码
- 如果要关闭屏幕更新和其他功能,请至少使用一些错误处理
- 不需要Call语句
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
On Error GoTo CleanFail
' Exit if modified cell is not E4
If Target.Address <> "$E$4" Then Exit Sub
' Turn off stuff to speed up process (only if modified cell is E4)
Application.ScreenUpdating = False
' Check the sheet name and call procedure accordingly
Select Case sh.Name
Case "Debt Detail"
' Do stuff if it's the target sheet
CopyValues ' Calls the sub CopyValues
sh.Range("A1").ClearOutline
sh.Range("D2").Select
Case "Borrower Statement"
' Do stuff if it's the target sheet
BorrowerStatementCall ' calls the sub BorrowerStatementCall
End Select
CleanExit:
' Turn on stuff again
Application.ScreenUpdating = True
Exit Sub
CleanFail:
MsgBox "An error occurred:" & Err.Description
GoTo CleanExit
End Sub
Private子工作簿\u SheetChange(ByVal sh作为对象,ByVal Target作为范围)
出错时转到CleanFail
'如果修改的单元格不是E4,则退出
如果目标地址为“$E$4”,则退出Sub
'关闭填充以加快进程(仅当修改的单元格为E4时)
Application.ScreenUpdating=False
'相应地检查图纸名称和调用过程
选择案例名称
案例“债务详情”
“如果是目标工作表,就做一些事情
CopyValues'调用子CopyValues
sh.Range(“A1”).清晰轮廓
sh.Range(“D2”)。选择
案例“借款人声明”
“如果是目标工作表,就做一些事情
BorrowerStatementCall'调用子BorrowerStatementCall
结束选择
清洁出口:
“再打开东西
Application.ScreenUpdating=True
出口接头
清除失败:
MsgBox“发生错误:”&错误说明
转到清洁出口
端接头
让我知道它是否有效您的代码中没有提及“借款人声明”。