Excel VBA:使InStr查找整个string,而不是它的一部分

我正在尝试做一个login/注册系统。

这是注册UserForm。

Private Sub regReg_Click() Dim TextFile As Integer Dim FilePath As String If regAParole.Text = "aparole" Then FilePath = ThisWorkbook.Path & "\accounts.txt" TextFile = FreeFile Open FilePath For Append As #1 Print #TextFile, regID; regAmats; regParole Close TextFile MsgBox ("Registracija veiksmiga.") Unload Registracija Else MsgBox ("Nepareiza administratora parole.") End If End Sub 

“aparole”的东西基本上只是一个关键字进入一个领域,所以只有pipe理员可以创build新的帐户。

accounts.txt内容如下所示:

1DirectorPassword(ID + jobposition +密码)

这是authentication:

 Private Sub logAuth_Click() Dim TextFile As Integer Dim FilePath As String Dim FileContent As String Dim find As String Dim result As Integer find = logID & logAmats & logParole FilePath = ThisWorkbook.Path & "\accounts.txt" TextFile = FreeFile Open FilePath For Input As TextFile FileContent = Input(LOF(TextFile), TextFile) result = InStr(FileContent, find) If result >= 1 Then MsgBox ("Autorizacija veiksmiga!") ' Success Unload Autorizacija End If 

基本上,当我login的时候,在accounts.txt中search注册时使用的string组合(ID + jobposition + password)。 所以一般来说这种方法是有效的,但是:

如果我input完全匹配的所有东西=很好

如果我input密码的一半,如= 1DirectorPass的格式,它仍然工作,所以基本上我怎么能告诉只search整个string,而不是它的一部分?

我认为问题在于InStr …

您可以在文件内容中testing换行标记,如下所示:

 result = InStr(vbCrLf & FileContent, vbCrLf & find & vbCrLf) 

这将只匹配完整的行。 在文件内容之前添加一个额外的换行符,所以也可以匹配第一行。 在文件内容的末尾,你已经有了一个vbCrLf字符,因为Print应该添加这个字符。