2016-05-07 17 views
1

ログイン/登録システムを作成しようとしています。Excel VBA:InStrで文字列全体を検索します。

これは登録ユーザーフォームです。

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」のものは、基本的にその管理者のみが新しいアカウントを作成することができますフィールドに入力するだけのキーワードです。

accounts.txtの内容は次のようになります。

1DirectorPassword(ID + jobposition +パスワード)

これは認証です:

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 

基本的に私はaccounts.txt内を検索するにはログインするとき私が登録時に使用する文字列コンボ(ID +ジョブポジション+パスワード)。だから、一般的にアプローチは動作しますが、:

私はすべてが完全に一致する入力した場合、私はとても基本的にはどのようにすることができ、それはまだ動作します= 1DirectorPassの形式のように、そのパスワードの半分を入力すると=は素晴らしい

の作品私は文字列全体だけを検索し、その部分は検索しません。

私はこのように、あなたはあなたのファイルの内容に改行マーカーのためにテストすることができ

+0

"1DirectorPassword"はリテラル文字列か、実際には何か変数ですか?リテラルに続く括弧はありますか?どの形式であるかは不明です。 – trincot

+0

私は3つのテキストボックスを持つユーザーフォームを持っています。 ID:textbox、JobPosition:textbow(ドロップダウン選択肢あり)、Password:textbox - 入力されたものは、IDJobPositionPassword(1Directorpassword)の形式でaccounts.txtに保存されます。 各エントリは単一の行にあります。 – user3688039

+0

括弧で囲んだものは一例ですが、そうですか?角かっこは実際にはありませんか? – trincot

答えて

1

...問題は、InStr関数内にあると思う:

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

これが唯一の完全なラインと一致します。追加の改行がファイルの内容の前に追加されるので、最初の行も一致させることができます。 Printはそれを追加する予定であるため、ファイルコンテンツの最後にはすでにvbCrLfという文字があります。

+0

パーフェクト。ありがとう! – user3688039

関連する問題