3

検証ルールを配置する必要があるExcelファイルがあります。ユーザーが時間を入力できる「顧客時間」というセルが1つありますが、それは時間のカスタマイズです。ユーザーはそのように時間を入力できます

23:45
98:20
100:30

ユーザーは文字列を入力できません。コロン以外の特殊文字は入力できません。私は 1 つのマクロを作成しましたが、顧客の要求に完全に対応しています。マクロはこちら

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

注: このマクロをテストするには、ツールで VBA ide に移動し、参照してから、Microsoft Visual Basic vbascript 5.5 を選択する必要があります。

これをExcelで呼び出したいと思います。=IsValidTime("23:43") のように呼び出して結果を取得できますが、顧客はこれを呼び出すことに興味がありません。顧客は値を入力する Excel を必要とし、値は上記の基準に従って検証され、正確な値または Null を取得します。

このタスクを修正する方法がわかりません。データからも日付と時刻を検証し、次にデータ検証を行ってルールを設定しましたが、完璧に機能します。このルールにも同じ方法が必要です。どんな助けでも大歓迎です...

ありがとうカズミ

4

1 に答える 1

4

Worksheet_Changeシート内でイベントを使用できます。VBE 内でシートを選択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
于 2012-12-14T21:35:48.450 に答える