VBA:如果下拉菜单更改了具有不同工作表的调用子,则Workbook函数



我有一个工作表函数,一旦E4中的下拉列表在工作表债务详细信息上发生更改,它就会自动调用CopyValues。此宏仅在工作表名称为"时运行;债务细节";否则它将退出Sub。这个宏到目前为止运行良好。我添加了另一张称为";借款人声明";,如果E4在借款人对账单中发生变化,其应调用借款人对账单call。

我需要修改现有的工作簿功能来实现这一点。下面是现有的代码。任何关于如何实现这一目标的帮助和建议都将不胜感激:


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

关于代码的一些建议:

  • 缩进代码
  • 如果你正在关闭屏幕更新和其他功能,请至少使用一些错误处理
  • 不需要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

让我知道它是否有效

相关内容

  • 没有找到相关文章

最新更新