返回列表 上一主題 發帖

[發問] 求助~關於vba的程式!

本帖最後由 FAlonso 於 2011-1-18 20:45 編輯

不好意思,我發現一些問題
2003年Z行股票"日勝生",黃色格子是最後一行
根據你的說法,計算日子的方法是把黃色格子及黃色格子位置以上的格子* 和 黃色格子以下的一格作比較
現在黃色格子下面沒有東西,怎辦?

*指若黃色格子是C10,所謂以上的格子是C9,C8,........云云,黃色以下的一格代表C11云云

還有中間的日數是否指trading days?
80 字節以內
不支持自定義 Discuz! 代碼

TOP

本帖最後由 FAlonso 於 2011-1-19 14:33 編輯

自己做了一個,給其他會員看看,excel文件稍為做了一些修改,把空column給刪掉
不能下載的話,請看下列程式
  1. Sub chooseyellowcell2()
  2. Dim i As Integer, myfinalrow As Integer
  3. Dim mycell As Range, mycolumn As Range, mycell2 As Range, mytarget As Range, mybaseline As Range, mycheck As Range
  4. Dim checkstatus As Boolean

  5. ThisWorkbook.Activate

  6. For i = 2 To Worksheets.Count
  7.     Sheets(i).Activate
  8.     myfinalrow = ActiveSheet.Range("A2").End(xlDown).Offset(1).Row
  9.         For Each mycell In ActiveSheet.Range("A1", Range("IV1").End(xlToLeft))
  10.             If mycell.Value <> "" Then
  11.             Set mycolumn = Range(mycell, mycell.End(xlDown))
  12.                 For Each mycell2 In mycolumn
  13.                     If mycell2.Interior.ColorIndex = 6 Then
  14.                         checkstatus = False
  15.                         Set mybaseline = mycell2.Offset(1)
  16.                         Set mycheck = mycell2
  17.                             If mybaseline.Value = "" Then
  18.                             mybaseline.Value = "無法計算"
  19.                             Exit For
  20.                             Else
  21.                             Do
  22.                                 If mycheck.Value >= mybaseline.Value Then
  23.                                 ActiveSheet.Cells(myfinalrow, mycheck.Column) = mybaseline.Row - mycheck.Row
  24.                                 checkstatus = True
  25.                                 Exit Do
  26.                                 Else
  27.                                 Set mycheck = mycheck.Offset(-1)
  28.                                 End If
  29.                             Loop While checkstatus = False And IsNumeric(mycheck) = True
  30.                                 If checkstatus = False Then
  31.                                 mycheck.End(xlDown).Offset(1).Value = "無填權"
  32.                                 End If
  33.                             End If
  34.                     End If
  35.                 Next
  36.             End If
  37.         Next
  38. Next

  39. End Sub
複製代碼
計算除權日.rar (289.3 KB)
80 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 能善用時間的人,必能掌握自己努力的方向。
返回列表 上一主題