1

次の VBA を使用してフォーム フィールドのエントリを検証しようとしています。これは非常にうまく機能します。私の問題は、この Access アプリがさまざまな XML データ ファイルを作成し、その xml 内に特定の文字を入れたくないことです。つまり、ソフト リターン (Shift + Enter) です。これの Chr は Chr(11) だと思いますが、下の配列の最後に , Chr(11)) を追加するだけではうまくいかないと思います... Chr(# をどのように使用できますか? )リンク方式で?

 Dim i, j As Integer
 dim myField as variant

 varNo = Array("\", "/", ":", "*", "?", """", "<", ">", "|")

 If IsNull(Me.FieldValue) = False Then
    myField = Me.FieldValue 
    For i = 0 To UBound(varNo)
    j = InStr(1, myField , varNo(i))
    If j > 0 Then
        MsgBox "Cannot use character:" & Chr(13) & Chr(10) & Chr(13)
        & Chr(10) & varNo(i), vbCritical, " Illegal Character"

        Exit Sub
        Exit For
    End If
    Next
 End If

繰り返しますが、上記は配列内のこれらのものに対してうまく機能しますが、Chr() も含めたいと思います。

4

2 に答える 2

1

別のアプローチに関するいくつかの注意事項を次に示します。

'' Microsoft VBScript Regular Expressions library
'' or CreateObject ("VBScript.RegExp")

Dim rex As New RegExp

With rex
   .MultiLine = False
   .Global = True
   .IgnoreCase = False
End With

'A line for testing
sLine = "abc" & Chr(11)

'Anything that is NOT a-zA-Z0-9 will be matched
rex.Pattern = "[^a-zA-Z0-9]"
If rex.Test(sLine) Then
    Debug.Print "Problem: include only alpha numeric"
End If
于 2012-11-13T15:44:07.327 に答える
1

新しい最後の要素として空の文字列を使用して配列を作成し、最後の要素の値を に変更できますChr(11)

varNo = Array("\", "/", ":", "*", "?", """", "<", ">", "|", "")
varNo(UBound(varNo)) = Chr(11)

実際、なぜそれが必要なのかわかりません。これは私のために働く...

varNo = Array("\", "/", ":", "*", "?", """", "<", ">", "|", Chr(11))

コメントに基づいて、評価しているテキストに実際に期待する文字が含まれていることを確認すると役立つと思います。このプロシージャにテキストを入力し、イミディエイト ウィンドウでその出力を調べます。

Public Sub AsciiValues(ByVal pInput As String)
    Dim i As Long
    Dim lngSize As Long
    lngSize = Len(pInput)
    For i = 1 To lngSize
        Debug.Print i, Mid(pInput, i, 1), Asc(Mid(pInput, i, 1))
    Next
End Sub
于 2012-11-13T15:05:40.350 に答える