返回列表 上一主題 發帖

[發問] [求助] VBA 比對後持續相減 問題

回復 1# sabery
  1. Sub TEST()
  2. Dim i As Integer
  3. Dim j As Integer
  4.        j = 5
  5.     Do While Sheets("B").Range("A" & j) <> ""
  6.            i = 6
  7.         Do While Range("B" & i) <> ""
  8.             If Range("B" & i) = Sheets("B").Range("A" & j) Then
  9.                 B = Sheets("A").Range("C" & i) + B
  10.                Range("D" & i) = Sheets("B").Range("B" & j) - B
  11.             End If
  12.                 i = i + 1
  13.         Loop
  14.                 B = 0
  15.                 j = j + 1
  16.     Loop
  17. MsgBox " TEST! "
  18. End Sub
複製代碼

TOP

回復 6# sabery
呃!我不是版大,我也只是個新學員而已!:P
試試這個
  1. For Each arng In Range("D6:D" & Cells(Rows.Count, "D").End(xlUp).Row)
  2.     If arng < 0 Then
  3.         With Range(Cells(arng.Row, 1), Cells(arng.Row, Columns.Count).End(xlToLeft).Address).Interior
  4.             .Color = vbRed
  5.         End With
  6.     Else
  7.         With Range(Cells(arng.Row, 1), Cells(arng.Row, Columns.Count).End(xlToLeft).Address).Interior
  8.             .Color = vbWhite
  9.         End With

  10.     End If
  11. Next
複製代碼

TOP

本帖最後由 lpk187 於 2015-4-15 20:26 編輯

回復 8# sabery

程序中條件不同,整體的程序也會跟著大變動的,不一定是你從中間插入就可以完成的。
原來的那個程序和你前面的條件相差太多,所以整個結構也很難相同
所以我又想了新增條件的新結構和之前的不同
  1. Sub TEST2()
  2. Dim i As Integer
  3. Sheets("A").Select
  4. i = 6
  5. Do While Range("B" & i) <> ""
  6.     SSS = Range("B" & i) '觀察變數用,可以刪除這列
  7.     If Range("D" & i) <> "" Then GoTo 100
  8.     Set c = Sheets("B").Columns(1).Find(Range("B" & i), , , , , 2) '尋找是否在存款中有帳戶
  9.     If c Is Nothing Then '如果沒有就執行這個程序
  10.         Range("D" & i) = "不夠"
  11.         GoTo 100
  12.     End If
  13.     QQQ = c.Offset(0, 1).Value '讀取工作表"B"某人的存款
  14.     AAA = QQQ - Range("C" & i) '某人的存款-第一次花費
  15.     Range("D" & i) = AAA
  16.     Set DepRow = Columns(2).Find(Range("B" & i), Range("B" & i), , , , 1) '尋找下一個某人的花費
  17.     Do While DepRow.Offset(0, 2).Value = "" '一直尋找某人的花費,直到找不到為止
  18.         AAA = AAA - DepRow.Offset(0, 1)
  19.         DepRow.Offset(0, 2) = AAA
  20.         Set DepRow = Columns(2).FindNext(DepRow)
  21.         BBB = DepRow.Row '觀察變數用,可以刪除這列
  22.     Loop
  23. 100: '重新還原變數值
  24. AAA = ""
  25. i = i + 1
  26. Set c = Nothing
  27. Loop
  28. MsgBox " TEST! "
  29. End Sub
複製代碼

TOP

回復 8# sabery


  下面是我執行的結果
B工作表
b.png
A工作表

TOP

        靜思自在 : 有願放在心裡,沒有身體力行,正如耕田不播種,皆是空過因緣。
返回列表 上一主題