[英]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.