Excel 分割函数给出';下标超出范围';循环内错误

Excel 分割函数给出';下标超出范围';循环内错误,excel,for-loop,split,vba,Excel,For Loop,Split,Vba,下面的代码段试图查看一列单元格的内容。每个单元格的格式为:“X.XX\ux-\ux.XX”。例如:5.66-13.44。该代码用于获取每个单元格,将每个字符串转换为double,将它们与其他数字进行比较,然后对下一个单元格重复 Sub Test() Dim PC As Worksheet Dim i As Integer Dim MaxSpace, MinSpace As Double Dim MinMax() As String Set PC = Workbooks("RFQ_Workshe

下面的代码段试图查看一列单元格的内容。每个单元格的格式为:“X.XX\ux-\ux.XX”。例如:5.66-13.44。该代码用于获取每个单元格,将每个字符串转换为double,将它们与其他数字进行比较,然后对下一个单元格重复

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(7,8)
时,代码运行良好


我在这里遗漏了什么?

基本上,您正在命中循环中没有分隔符的单元格

修正:

子测试()
Dim PC作为工作表
作为整数的Dim i
将MaxSpace设置为Double'您没有正确声明它
暗淡的明暗空间
Dim MinMax()作为字符串
调光范围
设置PC=此工作簿。工作表(“按选择”)
对于i=7到52
设置r=PC.Cells(i,8)
如果InStr(r,“-”)为0,则
最小最大值=拆分(PC.单元(i,8),“-”,2)
最大空间=CDbl(最小最大(1))
最小空间=CDbl(最小最大值(0))
'... 等
如果结束
接下来我
端接头

它表明,处于故障点的任何值
i
都是一个不符合您预期格式的单元格。当它出错时,点击“调试”并查看“本地人”窗格(查看>>本地人)。展开
minmax
变量,查看该数组的
0
1
位置中存储的内容。我怀疑整个字符串将位于
0
中,而
1
将不存在。除此之外,我们无能为力,因为这很可能是一个数据问题。为了避免运行错误,您可以执行
如果uBound(MinMax)>=1,那么MaxSpace=CDbl(MinMax(1))
,只需知道如果无法正确拆分,您的
如果MaxSpace>10.3
将失败,但您不会得到错误。您的一个单元格,在您迭代的范围内,它没有“-”。在调试模式下逐步检查代码,以便查看是哪个单元格导致了错误。@trincot:谢谢你的提示,我最初以为是空单元格导致了问题,但你是对的-它缺少分隔符。
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