从 VBA (Excel) 中的另一个函数调用一个函数
Posted
技术标签:
【中文标题】从 VBA (Excel) 中的另一个函数调用一个函数【英文标题】:Calling one function from the other function in VBA (Excel) 【发布时间】:2015-12-18 05:20:52 【问题描述】:我有两个 VBA 函数,但我无法从第一个函数调用另一个。
功能1:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lastRow As Long
With ActiveSheet
lastRow = .Cells(.Rows.count, "A").End(xlUp).Row
Dim I, J As Integer
For I = 1 To lastRow
If Cells(I, "C").Value = "" Then
MsgBox "Please Enter Business Type Value", vbOKOnly
Exit Sub
End If
Next I
End With
End Sub
第二个功能:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Not Application.Intersect(Target, Me.Columns(3)) Is Nothing Then
ActiveSheet.Unprotect
Select Case Target.Value
Case Is = "CNS"
Target.Offset(0, 4).Locked = True
Case Is = "cns"
Target.Offset(0, 4).Locked = True
Case Is = "APL"
Target.Offset(0, 4).Locked = False
Case Is = "apl"
Target.Offset(0, 4).Locked = False
Case Else
MsgBox "Value not covered by the program", vbInformation + vbOKOnly
End Select
ActiveSheet.Protect
Else
End If
Application.EnableEvents = True
End Sub
请帮助某人.. 提前谢谢..
【问题讨论】:
什么方法试图调用哪个?你试过什么?您看到了什么错误? 我想你的答案会在这个问题上:***.com/questions/1072075/… 我想从 Sub Worksheet_SelectionChange 调用 Sub Worksheet_Change 【参考方案1】:在同一个模块中,您只需调用 nameoffunction 您可以将功能设为公开
public sub function
但这是一个糟糕(有时很好)的解决方案。您应该构建您的代码
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
call modul1.function1 ( Target ) ' As Range)
End sub
Private Sub Worksheet_Change(ByVal Target As Range)
call modul1.function1 ( Target ) ' as range
call modul1.function2 ( Target )
end sub
编辑好丑的方式
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
....
call Worksheet_change ( Target)
End sub
【讨论】:
谢谢你的帮助,但我不知道怎么写 此调用 worksheet_change (target) 有效,谢谢以上是关于从 VBA (Excel) 中的另一个函数调用一个函数的主要内容,如果未能解决你的问题,请参考以下文章
Excel VBA从另一个具有多个输入,不同大小的输出的子调用子
如何在 VBA 的另一个函数中调用我在 VBA 中创建的函数?