簡體   English   中英

如何從excel調用VBA函數

[英]How to call VBA function from excel

我有excel文件,我必須放置驗證規則。 我有一個單元格說“客戶時間”,用戶可以輸入時間,但它是自定義時間。 用戶可以輸入這樣的時間

23:45
98:20
100:30

用戶不能輸入字符串,除冒號外不能輸入特殊字符。 我制作了一個宏,它完全符合客戶的需求。 這是宏觀

Public Function isValidTime(myText) As String
Dim regEx
Set regEx = New RegExp   'Regular expression object
regEx.Pattern = "^[0-9]+([:]+[0-9]+)*$"  ' Set pattern.
If regEx.test(myText) Then
isValidTime = myText
Else
isValidTime = "Null"
End If
End Function

注意:要測試此宏,您必須轉到Tool中的VBA ide然后引用,然后選擇microsoft visual basic vbascript 5.5

現在我想在excel上調用它。 我可以調用= IsValidTime(“23:43”)並獲得結果,但客戶對此稱之為不感興趣。 客戶需要一個excel,他/她輸入值,價值將根據上述標准進行驗證,並獲得准確的值或Null。

我不知道如何解決這個問題。 我已經從數據驗證日期和時間,然后數據驗證和設置規則,它的工作完美,我也需要相同的方式來我的這條規則。 任何幫助將受到高度贊賞......

謝謝Kazmi

您可以使用Worksheet_Change內的Worksheet_Change事件。 在VBE中,選擇工作表, Workhseet從左側下拉菜單中選擇Workhseet從右側選擇Change

輸入以下代碼:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" Then 'assumes user input cell is A1

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    On Error GoTo ErrTrap

    Target.Value = isValidTime(Target.Value)

End If

KeepMoving:

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With

    Exit Sub 

ErrTrap:

    MsgBox Err.Number & Err.Description
    Resume KeepMoving


End Sub

Public Function isValidTime(myText) As String

Dim regEx

Set regEx = New RegExp   'Regular expression object

regEx.Pattern = "^[0-9]+([:]+[0-9]+)*$"  ' Set pattern.

If regEx.test(myText) Then

    isValidTime = myText

Else
    isValidTime = "Null"

End If

End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM