0
以下のコードスニペットは、セルの列の内容を調べようとしています。各セルのフォーマットは "X.XX _-_ X.XX"です。例:5.66 - 13.44。このコードは、各セルを受け取り、各文字列を2重に変換し、それを他のいくつかの数値と比較し、次のセルに対して繰り返すことを意味します。分割関数は、ループ内で '下付き文字が範囲外です'エラーを返します
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)
に置き換えると、コードはうまく動作します。
私はここで何が欠けていますか?
それがどのような値 'i'が障害点であることは、あなたが期待しているフォーマットでない細胞であることを示唆しています。エラーが発生したら、 "Debug"を押して "Locals"ペイン(View >> Locals)を見てください。あなたの 'minmax'変数を展開し、その配列の' 0'と '1'の両方の位置に何が格納されているかを見てください。私は文字列全体が '0'であり、' 1'が存在しないと思われます。それはデータ問題の可能性が高いため、それ以上の助けにはならない。 – JNevill
もしあなたが 'uBound(MinMax)> = 1ならばMaxSpace = CDbl(MinMax(1))'を実行し、 'MaxSpace> 10.3 'が正常に動作しない場合に失敗することを知っているだけです分割してもエラーは発生しません。 – JNevill
反復処理中のセルに " - "が含まれていないセルがあります。デバッグモードでコードをステップ実行すると、エラーの原因となっているセルを確認できます。 – trincot