2017-06-15 13 views
1

私の関数の1つにブール値の問題があります。それは、このVBA:Booleanが正常に機能していません

TxtFile True, FileDir, 1, "Hello"

のように呼び出すと、関数が

TxtFile(WritetoFile As Boolean, FileDir As String, line As Variant, What As String)です。

機能が最初に行うことは、単純なIfelseifというステートメントでtrueまたはfalseをテストすることです。私の機能を実行すると、WritetoFile As Booleanfalseです。しかし、私が同じ関数を呼び出すと、DeBugを使ってそのステップを進めていくと、watchはそれがTrueだと言います。私は関数を別の形式で8つの異なる方法で問題なく呼び出します。

編集:関数全体

Option Compare Database 
Public ReadOptionsOutput As String 
Public FSO As New FileSystemObject 
Public TxtFileOutPut As String 

Public Function TxtFile(WritetoFile As Boolean, FileDir As String, line As Variant, What As String) 
Dim FileContent() As Variant 
Dim Idx As Integer 
Dim Txtstream As Object 

If WritetoFile = True Then 
Set Txtstream = FSO.OpenTextFile(FileDir, ForReading, False) 
Idx = 0 

On Error GoTo Err1 'To catch the last blank line. Dont see another way to see if .ReadLine is blank 
Do 'Build an array to edit lines in Text file 
    Idx = Idx + 1 
    ReDim Preserve FileContent(1 To Idx) 
    FileContent(Idx) = Txtstream.ReadLine 
Loop 
Err1: 
Open FileDir For Output As #1: Close #1 'Delet all text inside of File 
Set Txtstream = Nothing 
Set Txtstream = FSO.OpenTextFile(FileDir, ForAppending, False) 
FileContent(line) = What 'Edit line in the array 
    For Idx = 1 To Idx - 1 
     Txtstream.WriteLine (FileContent(Idx)) 'Write everything back to textfile 
    Next 


ElseIf WritetoFile = False Then 'Reads Line in file only 
Set Txtstream = FSO.OpenTextFile(FileDir, ForReading, False) 
NextLine = 1 

Do 'Loop thru to selected line and read it 
    TxtLine = Txtstream.ReadLine 
    If NextLine = line Then 
     TxtFileOutPut = TxtLine 
    End If 
    NextLine = NextLine + 1 
Loop Until NextLine > line 
End If 
Txtstream.Close 
End Function 
+2

コード全体を提供できますか?どのアプリケーション(Excel、Access)ですか? – Wernerson

+0

@Wernerson全体機能とVBAアクセスタグを含む投稿を編集します。あなたが他人を見たいと思ったら教えてください。 – Quint

+0

「私が私の機能を実行すると、WatchはWritetoFile As Booleanがfalseであることを私に伝えています。時計(View - > Watch)を見ると、WritetoFile is Trueと書かれています... – Wernerson

答えて

0

しようとすると、関数を呼び出すサブに変数を割り当てます。このように:

Dim WritetoFile As Boolean 
WritetoFile = True 
TxtFile WritetoFile, FileDir, 1, "Hello" 

+0

ちょうど試してみて、それをfalseと呼びます。それを踏襲して、それを真と呼びます。ニースはthoを試してください。あなたのご意見ありがとうございます。 – Quint

+0

コンパイルに問題はありますか?それをコンパイルしてもう一度実行してみてください。@Quint –

+0

デコンパイルしてagianをコンパイルしました。問題は永続的です – Quint

関連する問題