我有一個簡單的代碼
FileName = "h:\OutStr.txt"
Dim BA(1) As Byte
BA(0) = 99
BA(1) = 100
Open FileName For Binary Access Write As #1
lWritePos = 1
Put #1, lWritePos, BA
Close #1
保存后,OutStr.txt 包含預期的兩個位元組:99 和 100。
但是如果我使用一個函式,結果會有所不同:
Sub BytesToBinaryFile(out_file_name_, vData_)
Open out_file_name_ For Binary Access Write As #1
lWritePos = 1
Put #1, lWritePos, vData_
Close #1
End Sub
FileName = "h:\OutStr.txt"
Dim BA(1) As Byte
BA(0) = 99
BA(1) = 100
Call BytesToBinaryFile(FileName, BA)
在這種情況下,保存的檔案包含一個位元組序列,例如:
17 32 1 0 2 0 0 0 0 0 0 0 99 100
有人可以解釋一下結果的不同嗎?提前謝謝了!
uj5u.com熱心網友回復:
在
Sub BytesToBinaryFile(out_file_name_, vData_)
兩個變數都是 type Variant
。
正確宣告它們,它也可以在函式中按預期作業
Option Explicit
Public Sub BytesToBinaryFile(ByVal out_file_name_ As String, ByRef vData_() As Byte)
Open out_file_name_ For Binary Access Write As #1
Const lWritePos As Long = 1
Put #1, lWritePos, vData_
Close #1
End Sub
我建議始終激活Option Explicit
:在 VBA 編輯器中轉到工具?選項?需要變數宣告。
并盡可能地宣告所有變數,并盡可能避免Variant
。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/461444.html