将Split结果赋值给Variant数组时出现Type mismatch(Error 13)错误的原因
为什么最后一行会出现Type mismatch错误?
Dim LineArray() Dim Line Dim FilePath as String FilePath = "X:\Path\To\File.txt" Open FilePath For Input As #1 Line Input #1, Line Close #1 LineArray = Split(Line, vbTab)
错误原因
你声明Dim LineArray()时,这是一个动态Variant数组(类型为Variant/Variant()),而Split函数的返回值是一个包含一维String数组的Variant(类型为Variant/String())。VBA不允许直接将后者赋值给Variant/Variant()类型的动态数组,这就触发了类型不匹配错误。
哪怕将Line声明为Variant也无法解决问题,因为错误的根源在于LineArray的声明方式,和Line的类型无关。
解决方案
方案一:将LineArray声明为Variant(不带括号)
这样变量可以直接接收Split返回的数组:Dim LineArray As Variant Dim Line Dim FilePath as String FilePath = "X:\Path\To\File.txt" Open FilePath For Input As #1 Line Input #1, Line Close #1 LineArray = Split(Line, vbTab)方案二:将LineArray声明为String数组
直接指定数组类型为String,即可接收Split返回的结果:Dim LineArray() As String Dim Line Dim FilePath as String FilePath = "X:\Path\To\File.txt" Open FilePath For Input As #1 Line Input #1, Line Close #1 LineArray = Split(Line, vbTab)
内容的提问来源于stack exchange,提问作者Jens
相关产品推荐
相关产品推荐

