从VBA中的其他函数调用一个函数(Excel)

时间:2015-12-18 05:20:53

标签: excel excel-vba vba

我有两个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

请帮助别人.. 提前谢谢..

1 个答案:

答案 0 :(得分: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

编辑 ok ugly way

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
....
 call Worksheet_change ( Target)
End sub