Вот мой код, но я хочу знать, как я узнаю, есть ли в строке специальные символы, такие как '/' или ':'. Большое спасибо. Будет очень здорово, если вы сможете отредактировать мою функцию.

Do Until EOF(1)
   Line Input #1, LineFromFile <-----LineFromFile is the string
     If HasCharacter(LineFromFile) = True Then
        MsgBox "This File should be uploaded to FilePath2"
      Else
     Blah Blah Blah.......

Это моя функция

Function HasCharacter(strData As String) As Boolean
   Dim iCounter As Integer

   For iCounter = 1 To Len(strData)
     If ....(Don't know what to say) Then
       HasCharacter = True
       Exit Function
     End If
   Next iCounter
End Function
vba
4
Roi patrick Florentino 15 Май 2014 в 19:03

4 ответа

Лучший ответ

Измените свой код на этот:

Function HasCharacter(strData As String) As Boolean

     If InStr(strData, "/") > 0 Or InStr(strData, ":") > 0 Then
       HasCharacter = True
     Else
       HasCharacter = False
     End If
End Function

Функция InStr возвращает позицию строки, если она найдена, иначе она возвращает 0.

4
Manuel Allenspach 15 Май 2014 в 15:05

Вы можете просто:

if strData like "*[:/]*" then 
    msgbox "This File should be uploaded to FilePath2"
else
    ...
3
Alex K. 15 Май 2014 в 15:11

Используйте InStr(stringToCheck, characterToFind)

Function HasCharacter(strData As String) As Boolean
  If InStr(strData, "/") + InStr(strData, ":") > 0 Then
    HasCharacter = True
  End If
End Function

InStr возвращает 0, если символ не может быть найден в строке. В этом случае я складываю позиции обоих специальных символов вместе. Если сумма этих позиций больше 0, мы знаем, что она содержит по крайней мере один специальный символ. Вы можете разделить эту логику, если хотите.

2
grovesNL 15 Май 2014 в 15:11

Если у вас несколько символов, вы также можете инвертировать проверку, и ее легче редактировать, чем несколько операторов или

Function HasCharacter(strData As String) As Boolean
   Dim iCounter As Integer

  For iCounter = 1 To Len(strData)
    If Instr ("/:", Mid (strData, iCounter, 1)) > 0 Then
      HasCharacter = True
      Exit Function
    End If
  Next iCounter

Конечная функция

0
user2903089 15 Май 2014 в 15:57