Access 2010 vba - импорт из номеров Excel, букв или пробелов - PullRequest
0 голосов
/ 14 сентября 2018

Я все еще новичок в VBA.У меня есть база данных, которую с помощью других людей я наконец смог проверить при импорте.Тем не менее, я могу сделать проверку с числами в виде текста, но если мне нужен буквенный символ или если ячейка пуста, я застрял.Это то, что я имею для чисел в виде текста.Мне нужны две проверки: 1) принять буквенно-цифровой или пустой (ноль) и 2) числовой или пустой (ноль).

   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

Этот работает нормально, если в каждой строке / ячейке есть символы для заполнения,Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 14 сентября 2018

Если вы возвращаете логическое значение, вы должны возвращать истинное значение только в том случае, если все выполнено правильно, поэтому вы не получите ложноположительный результат, если что-то не получится.Вы можете использовать проверку, если для пустой ячейки ячейка имеет длину 0, т.е. если Len = 0. То, что вы делаете в своем операторе If Not, проверяет, находится ли значение ascii для c между значениями ascii от 0 до 9, так что вы можетеиспользуйте операторы или, чтобы проверить, находится ли он между 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
...