Split函数在循环内给出'下标超出范围'的错误

下面的代码片段试图查看一列单元格的内容。 每个单元格格式:“X.XX _-_ X.XX”。 例如:5.66 – 13.44。 代码是为了取每个单元格,将每个string转换为一个双精度值,将它们与其他数字进行比较,然后重复下一个单元格。

Sub Test() Dim PC As Worksheet Dim i As Integer Dim MaxSpace, MinSpace As Double Dim MinMax() As String Set PC = Workbooks("RFQ_Worksheet").Worksheets("Press Choice") For i = 7 To 52 MinMax = Split(PC.Cells(i, 8), " - ", 2) MaxSpace = CDbl(MinMax(1)) MinSpace = CDbl(MinMax(0)) If MaxSpace > 10.3 Then 'Do some stuff End If Next i End Sub 

包含MaxSpace = CDbl(MinMax(1))会给出“下标超出范围”错误。 但是,当我用PC.Cells(i, 8)代替PC.Cells(i, 8)时,代码运行良好。

我在这里错过了什么?

基本上,你正在击中没有分隔符的循环中的单元格。

固定:

 Sub Test() Dim PC As Worksheet Dim i As Integer Dim MaxSpace As Double 'you didn't declare it properly Dim MinSpace As Double Dim MinMax() As String Dim r As Range Set PC = ThisWorkbook.Worksheets("Press Choice") For i = 7 To 52 Set r = PC.Cells(i, 8) If InStr(r, " - ") <> 0 Then MinMax = Split(PC.Cells(i, 8), " - ", 2) MaxSpace = CDbl(MinMax(1)) MinSpace = CDbl(MinMax(0)) '... etc End If Next i End Sub