返回列表 上一主題 發帖

[發問] 出現RUN-TIME ERROR '9': SUBSCRIPT OUT OF RANGE,請問哪裡出現問題?

[發問] 出現RUN-TIME ERROR '9': SUBSCRIPT OUT OF RANGE,請問哪裡出現問題?

[版主管理留言]
  • Hsieh(2012-12-26 16:41): 要偵錯程式碼,請附上檔案

  1. Sub schedule()

  2.   Dim i As Integer
  3.   Dim j As Integer
  4.   Dim l As Integer
  5.   
  6.   j = Worksheets("PARKER SHIPMENT").Range("A" & Worksheets("PARKER SHIPMENT").Rows.Count).End(xlUp).Row
  7.   l = 13

  8. If IsError(Application.VLookup(Worksheets("船期表").Cells(1, 1).Value, Sheets("客戶資料").Range("A:C"), 3, False)) Then
  9. Worksheets("船期表").Range("B1").Value = ""
  10. Else
  11. Worksheets("船期表").Range("B1").Value = Application.VLookup(Worksheets("船期表").Cells(1, 1).Value, Sheets("客戶資料").Range("A:C"), 3, False)
  12. End If
  13.   
  14. If IsError(Application.VLookup(Worksheets("船期表").Cells(1, 1).Value, Sheets("客戶資料").Range("A:D"), 4, False)) Then
  15. Worksheets("船期表").Range("B2").Value = ""
  16. Else
  17. Worksheets("船期表").Range("B2").Value = Application.VLookup(Worksheets("船期表").Cells(1, 1).Value, Sheets("客戶資料").Range("A:D"), 4, False)
  18. End If
  19.   
  20. If IsError(Application.VLookup(Worksheets("船期表").Cells(1, 1).Value, Sheets("客戶資料").Range("A:E"), 5, False)) Then
  21. Worksheets("船期表").Range("E8").Value = ""
  22. Else
  23. Worksheets("船期表").Range("E8").Value = Application.VLookup(Worksheets("船期表").Cells(1, 1).Value, Sheets("客戶資料").Range("A:E"), 5, False)
  24. End If
  25.   
  26. If IsError(Application.VLookup(Worksheets("船期表").Cells(1, 1).Value, Sheets("客戶資料").Range("A:G"), 7, False)) Then
  27. Worksheets("船期表").Range("L8").Value = ""
  28. Else
  29. Worksheets("船期表").Range("L8").Value = Application.VLookup(Worksheets("船期表").Cells(1, 1).Value, Sheets("客戶資料").Range("A:G"), 7, False)
  30. End If

  31.   

  32.   For i = 2 To j
  33.   
  34.   If Worksheets("PARKER SHIPMENT").Cells(i, 4).Value = Worksheets("船期表").Range("B1").Value Then
  35.   Worksheets("船期表").Cells(l, 3).Value = Worksheets("PARKER SHIPMENT").Cells(i, 2).Value
  36.   Worksheets("船期表").Cells(l, 4).Value = Worksheets("PARKER SHIPMENT").Cells(i, 1).Value
  37.   Worksheets("船期表").Cells(l, 6).Value = Worksheets("PARKER SHIPMENT").Cells(i, 7).Value
  38.   Worksheets("船期表").Cells(l, 7).Value = Worksheets("PARKER SHIPMENT").Cells(i, 9).Value
  39.   Worksheets("船期表").Cells(l, 8).Value = Worksheets("PARKER SHIPMENT").Cells(i, 11).Value
  40.   Worksheets("船期表").Cells(l, 9).Value = Worksheets("PARKER SHIPMENT").Cells(i, 12).Value
  41.   Worksheets("船期表").Cells(l, 10).Value = Worksheets("PARKER SHIPMENT").Cells(i, 13).Value
  42.   Worksheets("船期表").Cells(l, 11).Value = Worksheets("PARKER SHIPMENT").Cells(i, 14).Value
  43.   Worksheets("船期表").Cells(l, 12).Value = Worksheets("PARKER SHIPMENT").Cells(i, 20).Value
  44.   Worksheets("船期表").Cells(l, 13).Value = Worksheets("PARKER SHIPMENT").Cells(i, 21).Value

  45.   
  46.   If Worksheets("PARKER SHIPMENT").Cells(i, 19).Value = " " Then Worksheets("船期表").Cells(l, 5).Value = "沒有"
  47.   Else
  48.   Worksheets("船期表").Cells(l, 5).Value = "有"
  49.   End If
  50.    
  51.   If Worksheets("PARKER SHIPMENT").Cells(i, 27).Value <> " " And Worksheets("PARKER SHIPMENT").Cells(i, 28).Value > 0 And Worksheets("PARKER SHIPMENT").Cells(i, 28).Value <> " " Then
  52.     Worksheets("船期表").Cells(l, 14).Value = "已付款"
  53.     Else
  54.     Worksheets("船期表").Cells(l, 14).Value = " "
  55.   End If
  56.   
  57.   l = l + 1
  58.   
  59.   
  60.   Next i
  61.   
  62. End Sub
複製代碼
出現RUN-TIME ERROR '9': SUBSCRIPT OUT OF RANGE,請問哪裡出現問題?

請問這個乘數的寫法對嗎?
Worksheets("Oracle").Cells(i, 19).value 儲存個的資料是120000
Worksheets("Oracle").Cells(i, 22).Value的 儲存個的資料是30% 7 DAY.
Worksheets(customer).Cells(cnt, 6).Value = Worksheets("Oracle").Cells(i, 19).value * Left((Worksheets("Oracle").Cells(i, 22).Value), 3)

TOP

回復 51# 198188
日期都會出現 : 這是儲存格的日期格式
你只說 ETA 欄set >=41291  你需要查看整個程式哪裡有設定了, 儲存格的日期格式 為 .NumberFormatLocal = "[$-C04]d mmmm, yy;@"
改為  .NumberFormatLocal = "G/通用格式"
這些格式程式碼 可用錄製巨集得到
PS : $-C04 香港地區 的格式代號

TOP

回復 49# GBKEE

ETA
>=41291

請問我將rule ETA 欄set >=41291, 但下面的日期都會出現,是為什麼?

    ETA
18-Dec-11
18-Dec-11
24-Dec-11
25-Feb-12
14-Jan-12
1-Feb-12
11-Feb-12
17-Feb-12
12-Feb-12
20-Feb-13
11-Feb-12
12-Feb-12
7-Mar-12
13-Feb-12
13-Feb-12
25-Feb-12
25-Feb-12
22-Feb-12
20-Mar-12
20-Mar-12
20-Mar-12

TOP

回復 49# GBKEE


  感謝。已經知道問題所在,我的電腦是週六或者週日,不是星期六或者星期日

TOP

回復 48# 198188
Debug.Print可在 即時運算視窗  中查看  The_day 傳回的字串
   
  1. The_day = Format(Worksheets("Request").Range("F" & i).Value - 2, "AAA")  '傳回星期?
  2.     Debug.Print The_day   ' *** Debug.Print可在 即時運算視窗  中查看  The_day 傳回的字串
  3.     If The_day = "星期六" Or The_day = "星期日" Then
複製代碼



TOP

回復 47# GBKEE


   

運行出來的結果還是一樣,不懂得辨認星期六或者星期日

TOP

回復 46# 198188
改成
  1. .Range("H" & i).Value
複製代碼

TOP

回復 45# GBKEE


     .Range("H" & i).Text = .Range("F" & i).Value - 2
執行階段錯誤‘1004’
無法設定種類range的text 屬性

TOP

回復 44# 198188
試試看
  1. '6)
  2. Sub Request()
  3.     Dim rngSrc As Range, rngCopyField As Range, rngFilter As Range
  4.     Dim nextRow As Long, endRow As Long
  5.     Dim LastRec As Integer
  6.     Dim i As Integer
  7.     Dim The_day As String  '<- ****
  8.     Sheets("Request").[A2:AG65536].ClearContents
  9.     Set rngSrc = Sheets("State").[A1:AG65536]
  10.     Set rngCopyField = Sheets("Rule").[B21:AH21]
  11.     Set rngFilter = Sheets("Rule").[B14].Resize(Sheets("Rule").[B14].CurrentRegion.Rows.Count, 33)
  12.      nextRow = 2
  13.     Sheets("Request").UsedRange.Offset(1).Clear
  14.     rngSrc.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
  15.     rngFilter, CopyToRange:=Sheets("Request").Range("A" & nextRow)
  16.          endRow = Sheets("Request").Range("A" & Sheets("Request").Rows.Count).End(xlUp)
  17.         For i = 1 To rngCopyField.Count
  18.         If rngCopyField(i) = "N" Then
  19.             Sheets("Request").Range(nextRow & ":" & endRow).Columns(i).Clear
  20.         End If
  21.     Next
  22.         Sheets("Request").Range("A" & nextRow).Resize(1, 33).Delete Shift:=xlUp   'delete header
  23.        Set rngSrc = Nothing
  24.     Set rngCopyField = Nothing
  25.     Set rngFilter = Nothing
  26. With Worksheets("Request")
  27.    LastRec = .Range("A1").End(xlDown).Row
  28.   For i = 2 To LastRec
  29.     .Range("B" & i).Value = Application.VLookup(.Range("A" & i).Value, Sheets("State").Range("A:S"), 19, False)
  30.     .Range("C" & i).Value = Application.VLookup(.Range("A" & i).Value, Sheets("State").Range("A:AA"), 27, False)
  31.     .Range("D" & i).Value = Application.VLookup(.Range("A" & i).Value, Sheets("State").Range("A:U"), 21, False) & " - " & Application.VLookup(.Range("A" & i).Value, Sheets("State").Range("A:AC"), 29, False)
  32.     .Range("E" & i).Value = Application.VLookup(.Range("A" & i).Value, Sheets("State").Range("A:AB"), 28, False)
  33.     .Range("F" & i).Value = Application.VLookup(.Range("A" & i).Value, Sheets("State").Range("A:B"), 2, False)
  34.     .Range("G" & i).Value = Application.VLookup(.Range("A" & i).Value, Sheets("State").Range("A:N"), 14, False)
  35.     The_day = Format(Worksheets("Request").Range("F" & i).Value - 2, "AAA")  '傳回星期?
  36.     If The_day = "星期六" Or The_day = "星期日" Then
  37.         .Range("H" & i).Value = .Range("F" & i).Value
  38.     Else
  39.         .Range("H" & i).Text = .Range("F" & i).Value - 2
  40.     End If
  41.     .Range("F" & i).NumberFormatLocal = "m/d;@"   '設定日期格式
  42.     .Range("H" & i).NumberFormatLocal = "m/d;@"   '設定日期格式
  43.       Next
  44.     End With
  45. End Sub
複製代碼

TOP

        靜思自在 : 人事的艱難與琢磨,就是一種考驗。
返回列表 上一主題