返回列表 上一主題 發帖

副程式/if判斷不到/請求解惑

回復 3# 最高機密
  1. Public X, Y

  2. Sub trend()
  3.     X = InputBox("輸入第一天")
  4.     Y = InputBox("輸入最後一天")
  5.     For a = 2 To 486
  6.         If X > Cells(a, 1) And Cells(a, 1) <= Y Then
  7.             Call aa(a)
  8.         End If
  9.     Next a
  10. End Sub
複製代碼

TOP

回復  luhpro

我嘗試了一下,我值隨便輸入,一樣會測試全部 似乎沒有判斷到IF
   
Public x, y
Sub ...
最高機密 發表於 2013-10-21 01:38

終於了解你指的問題在哪裡,字串比較最好使用 StrComp() 涵示較宜。
我將 If 的判斷移至入口處,不然每一次迴圈都要無端演練 24 次 (For b = 9 To 32),
請全部貼至 Module1 或 原本之表單內 (可以將 Module1 內的 Public x,y 移除)
程式段我都已將它對位好了,以方便偵錯與閱覽。
  1. Public x, y

  2. Sub trend()
  3.     x = InputBox("輸入第一天")
  4.     y = InputBox("輸入最後一天")
  5.     If x = "" Or y = "" Then Exit Sub
  6.    
  7.     For a = 2 To 486
  8.         Call aa(a)
  9.     Next a
  10. End Sub

  11. Sub aa(ByVal a As Integer)
  12.     If StrComp(Cells(a, 1), x, 1) >= 0 And StrComp(y, Cells(a, 1), 1) >= 0 Then
  13.         For b = 9 To 32
  14.             If Cells(a, b) >= Cells(a - 1, b) Then
  15.                 Cells(a, b + 25) = Cells(a + 2, 2) - Cells(a + 1, 2)
  16.             Else
  17.                 Cells(a, b + 25) = Cells(a + 1, 2) - Cells(a + 2, 2)
  18.             End If
  19.             c = Cells(a, b + 25)
  20.             D = D + c
  21.             Cells(489, b + 25) = D
  22.             e = Cells(1, b + 25)
  23.             Cells(488, b + 25) = e
  24.         Next
  25.         c = 0
  26.         Cells(1, b + 25) = Cells(1, b)
  27.     End If
  28. End Sub
複製代碼

TOP

本帖最後由 c_c_lai 於 2013-10-22 06:05 編輯

回復 11# 最高機密
看了以下分析便不會混亂了:
  1. 假設 x,y  你的輸入值分別為 20040116,20040206

  2. x                          = "20040116"  (輸入值)
  3. y                          = "20040206"  (輸入值)
  4.                   [A2]
  5. Cells(a, 1)                = 20040109
  6. StrComp(Cells(a, 1), x, 1) = -1        '  [A2] < x
  7. StrComp(y, Cells(a, 1), 1) = 1         '  y > [A2]
  8.                   [A3]     (條件符合 - 成立)
  9. Cells(a, 1)                = 20040116
  10. StrComp(Cells(a, 1), x, 1) = 0         '  [A3] = x
  11. StrComp(y, Cells(a, 1), 1) = 1         '  y > [A3]
  12.                   [A4]     (條件符合 - 成立)
  13. Cells(a, 1)                = 20040130
  14. StrComp(Cells(a, 1), x, 1) = 1         '  [A4] > x
  15. StrComp(y, Cells(a, 1), 1) = 1         '  y > [A4]
  16.                   [A5]     (條件符合 - 成立)
  17. Cells(a, 1)                = 20040206
  18. StrComp(Cells(a, 1), x, 1) = 1         '  [A5] > x
  19. StrComp(y, Cells(a, 1), 1) = 0         '  y = [A5]
  20.                   [A6]
  21. Cells(a, 1)                = 20040213
  22. StrComp(Cells(a, 1), x, 1) = 1         '  [A6] > x
  23. StrComp(y, Cells(a, 1), 1) = -1        '  y < [A6]
  24.                   [A7]
  25. Cells(a, 1)                = 20040220
  26. StrComp(Cells(a, 1), x, 1) = 1         '  [A7] > x
  27. StrComp(y, Cells(a, 1), 1) = -1        '  y < [A7]
複製代碼
撥雲見日了嗎?

TOP

        靜思自在 : 有智慧才能分辨善惡邪正;有謙虛才能建立美滿人生。
返回列表 上一主題