【问题标题】:Access 2010 vba - import from excel numbers, letters or blank spacesAccess 2010 vba - 从 excel 数字、字母或空格导入
【发布时间】:2019-02-19 13:06:59
【问题描述】:

我还是 vba 的新手。我有一个数据库,在其他人的帮助下,我终于能够在导入时进行验证检查。但是,我可以将数字作为文本进行检查,但是如果我需要字母字符或者单元格为空白,我会被卡住。这就是我将数字作为文本所拥有的。我需要两项检查:1)接受字母数字或空白(null)和 2)数字或空白(null)。

   Function chk2(A As String) As Boolean
   Dim i As Integer, l As Integer, c As String
   l = Len(A)
     If l = 4 Then
      chk2 = True
         For i = 1 To l
         c = Mid(A, i, 1)
         If Not (c >= "0" And c <= "9") Then
            chk2 = False
            Exit Function
        End If
    Next i
    End If
   End Function

只要每行/单元格中都有要填充的字符,这个就可以正常工作。 提前感谢您的帮助。

【问题讨论】:

    标签: ms-access vba ms-access-2010 excel-2010


    【解决方案1】:

    如果您要返回一个布尔值,那么您应该只在一切都正确执行的情况下返回一个真值,这样如果出现故障,您就不会得到误报。 您可以使用检查单元格是否具有 0 长度的空白单元格,即如果 Len = 0 您在 If Not 语句中所做的是检查 c 的 ascii 值是否在 ascii 值 0 和 9 之间,因此您可以使用 or 语句检查它是否在 a 和 z 或 A 和 Z 之间,或者是否存在字符 32 - Chr(32) 的空格:

    Function chk2(A As String) As Boolean
        Dim i As Integer, l As Integer, c As String
    
        chk2 = false
    
        l = Len(A)
        If l = 0 then
            'do something if the cell is blank
            chk2 = true
        ElseIf l = 4 Then
            For i = 1 To l
                c = Mid(A, i, 1)
    
                If Not ((c >= "0" And c <= "9") Or (c >= "a" And c <= "z") Or (c >= "A" And C <= "Z") Or c = Chr(32)) Then
                    Exit Function
                End If
            Next i
    
            chk2=true
        End If
    End Function
    

    【讨论】:

    • 谢谢杰弗里!如果 Len = 0 不做任何事情,是否可以留空?还是我必须做点什么?
    • 是的,你可以留空
    • 谢谢杰弗里!我会试一试的。
    • 我的代码有另一个问题(相同的数据库)。我不能让上述内容只接受某些信件。例如,如果不是 (c = "A") And (c = "C") And (c = "S") 那么 chk2=False。也许,我只是慢了点什么的。
    • 另外,我仍然遇到空值问题,我可以用一些“0”,但如果它需要一个 alpha,那么我也有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多