Board logo

標題: [發問] END 屬性問題運用 [打印本頁]

作者: alex520188    時間: 2011-9-5 18:59     標題: END 屬性問題運用

各位先進好 小弟有問題想請教

在他程式運算過程中 偵測運算出來的結果"那一格" 語法要怎樣撰寫?
我要取得  M 這個cells的位置 以利後面的語法運作
另 Cells(I, J) - Cells(I, (J - 2)) = 0 要讓他跑到不等於0 語法要怎修改
  1. Sub AAA123()
  2.   
  3. Dim I%, J%, k%                        '宣告變數
  4. Dim current As Worksheet
  5. For Each current In Worksheets        '對所有活頁簿作處理
  6. current.Select
  7. 'J = Rows(1).End(xlToRight).Column     '取得第一列最後一格有資料的值
  8. J = 1
  9. Do While Cells(1, J) <> "高程"        '滿足條件時執行以下動作
  10. J = J + 1
  11. Loop
  12. J = J - 1
  13. Columns(J).Insert Shift:=xlToRight    '向右插入一欄
  14. k = Range("a:a").End(xlDown).Row      '取得A欄最後一格有資料的值
  15. Range(Columns(J + 1).Rows(2), Columns(J + 2).Rows(k)).Clear  '欄位數值清除
  16. Cells(1, J) = Now()                   '鍵入時間
  17. For I = 2 To k Step 1                 '迴圈處理
  18.     If Cells(I, (J - 1)) - Cells(I, (J - 2)) > 0 Then    '若相減大於0 跑負亂數
  19.         Randomize
  20.         Cells(I, J) = Round(((-0.1 - -0.3) * Rnd + -0.3), 1) + Cells(I, (J - 1))
  21.             ElseIf Cells(I, (J - 1)) - Cells(I, (J - 2)) < 0 Then   '若相減小於0 跑正亂數
  22.                 Randomize
  23.                 Cells(I, J) = Round(((0.3 - 0.1) * Rnd + 0.1), 1) + Cells(I, (J - 1))
  24.         Else
  25.             Cells(I, J) = ""           '以上條件不成立則為空字串
  26.     End If
  27. If Cells(I, J) - Cells(I, (J - 2)) = 0 Then
  28.     Call 等於0
  29. End If
  30.     With Cells(I, J + 1)              '求得兩者差異
  31.         .Formula = "=IF(ISBLANK(" & .Offset(0, -1).Address & "),""""," & .Offset(0, -1).Address & " - " & .Offset(0, -2).Address & ")"
  32.     End With
  33.             With Cells(I, J + 2)                  '求得高程
  34.                 .Formula = "=IF(ISBLANK(" & .Offset(0, -2).Address & "),""""," & "b" & I & "+(" & .Offset(0, -2).Address & "*0.001)-ROUND(RAND()*0.00005,5))"
  35.             End With
  36.     If Cells(I, J) = "" Then          '當此為空字串
  37.         Cells(I, J + 1) = ""          '則顯示空字串
  38.         Cells(I, J + 2) = ""
  39.     End If
  40. Next I
  41. 'Cells(1, J) = Now()                   '鍵入時間
  42. Set current = Nothing                 '釋放物件變數
  43. Next current
  44. MsgBox "Worksheets working Success!!" '訊息提示
  45. 'Range(Columns(J + 2).Rows(2), Columns(J + 2).Rows(k)).Copy  '高程複製
  46. End Sub

  47. Sub 等於0()

  48. Dim I%, J%, k%, M%
  49. J = 1
  50. Do While Cells(1, J) <> "高程"        '滿足條件時執行以下動作
  51. J = J + 1
  52. Loop
  53. J = J - 2
  54. M = Cells(Rows.Count, Columns(J).End(xlDown)).End(xlUp).Rows          '這行寫不出來...
  55. 'M = Range("J" & 65536).End(xlUp).Rows
  56.          If Cells(M, (J - 1)) - Cells(M, (J - 2)) > 0 Then    '若相減大於0 跑負亂數
  57.             Randomize
  58.             Cells(M, J - 1) = Round(((-0.1 - -0.3) * Rnd + -0.3), 1) + Cells(M, (J - 1))
  59.                
  60.                 ElseIf Cells(M, (J - 1)) - Cells(M, (J - 2)) < 0 Then   '若相減小於0 跑正亂數
  61.                     Randomize
  62.                     Cells(M, J - 1) = Round(((0.3 - 0.1) * Rnd + 0.1), 1) + Cells(M, (J - 1))
  63.         End If
  64.    
  65. End Sub
複製代碼
已附上檔案

請各位大大指教
作者: GBKEE    時間: 2011-9-7 16:04

回復 1# alex520188
Cells(I, J) - Cells(I, (J - 2)) = 0 要讓他跑到不等於0 語法要怎修改
If Cells(I, J) - Cells(I, (J - 2)) <> 0  Then
沒看到附檔阿!
作者: alex520188    時間: 2011-9-7 17:03

回復 2# GBKEE


    已補上~[attach]7756[/attach]
作者: Hsieh    時間: 2011-9-7 18:45

M = Cells(Rows.Count, j).End(xlUp).Row
作者: alex520188    時間: 2011-9-7 23:50

回復 4# Hsieh


    M = Cells(Rows.Count, j).End(xlUp).Row
謝謝hsieh板主的指點 沒想到這麼簡單一句 我卻想不出來

我的第二個問題 "Cells(I, J) - Cells(I, (J - 2)) = 0 要讓他跑到不等於0 語法要怎修改" 可能說的不是很清楚
我換個方式表達
Randomize 我有設區間給他跑 但是經過Sub 等於0() 這個程式之後 Cells(I, J)還是有機率會跑出與Cells(I, J-2)同樣的值
有什麼方法可以讓它亂數過後的值都不相等呢
作者: alex520188    時間: 2011-9-8 00:08

代碼更正
Cells(M, J - 1) 改成Cells(M, J )




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)