返回列表 上一主題 發帖

如何做到對日期的checking

如何做到對日期的checking

本帖最後由 patrickccs 於 2014-9-4 07:54 編輯

請見附檔

Sheet2中的command button 是把資料copy & paste到Sheet1, 但我想做到的是, 如果A2的日期是等於打開excel當天的日期(例如今天), 就把整列刪除, 才copy & paste到Sheet1, 如果不等於的話, 就全部直接copy & paste到Sheet1

請問我可以用哪一個指令?

謝謝

123.zip (20.68 KB)

回復 1# patrickccs

參考看看
  1. Private Sub CommandButton1_Click()
  2. If [a2] = Date Then
  3. [a2].EntireRow.Delete
  4. Range("a2:G" & [a65536].End(3).Row).Copy
  5. Sheets("sheet1").Select
  6. Sheets("sheet1").[a2].Select
  7. Selection.PasteSpecial xlPasteValues
  8. Else: Range("a2:G" & [a65536].End(3).Row).Copy
  9. Sheets("sheet1").Select
  10. Sheets("sheet1").[a2].Select
  11. Selection.PasteSpecial xlPasteValues
  12. End If
  13. End Sub
複製代碼

TOP

回復  patrickccs

參考看看
owen06 發表於 2014-9-4 10:04
已成功嘗試, 謝謝

TOP

另外, 想問問, 如果我想要在A15 輸入我想要的日期, 例如8-Sep-14, 然後想要計算前一天(即5-Sep-14)之間A,B,C,D,E,F每一項的相差數值, 計算之後在相應15欄顯示出來(即B15,C15,D15等)

那我應該從哪一個command指令學習?? 我完全沒有方向

TOP

回復 4# patrickccs


    試試看在sheet1加入這個
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. With Target
  3.   If .Column = 1 And .Row = 15 Then
  4.     For Each mr In [a2:a10]
  5.       If mr = [a15] Then
  6.         tg = mr.Row
  7.       End If
  8.      Next
  9.    For i = 2 To 7
  10.      Cells(15, i) = Cells(tg, i) - Cells(tg - 1, i)
  11.    Next
  12.   End If
  13. End With
  14. End Sub
複製代碼

TOP

測試成功,不過要注意sheet名稱的不同才不會出現錯誤

TOP

回復 5# owen06 測試ok, 如果我想用command button 去執行這個指令, 要怎麼改?

TOP

本帖最後由 owen06 於 2014-9-8 10:54 編輯
  1. Private Sub CommandButton2_Click()
  2. For Each mr In [a2:a10]
  3.       If mr = [a15] Then
  4.         tg = mr.Row
  5.       End If
  6.      Next
  7.    For i = 2 To 7
  8.      Cells(15, i) = Cells(tg, i) - Cells(tg - 1, i)
  9. Next
  10. End Sub
複製代碼

TOP

回復 8# owen06

測試成功, 謝謝!

我還有一個疑問, 就是假設我沒有在A15輸入日期或者輸入錯了, 但它就跑出運行錯誤的訊息, 所以有辦法做到不跑出運行錯誤的訊息, 而只是沒有資料在相關欄位嗎?

TOP

回復 9# patrickccs


    改良了一下,你試試吧
  1. Private Sub CommandButton1_Click()
  2. [b15:G15].Clear
  3. For Each mr In Range("a2:a" & [a1].End(4).Row)
  4.       If mr = [a15] Then
  5.         tg = mr.Row
  6.       End If
  7. On Error Resume Next
  8.      Next
  9.    For i = 2 To 7
  10.      Cells(15, i) = Cells(tg, i) - Cells(tg - 1, i)
  11. Next
  12. End Sub
複製代碼

TOP

        靜思自在 : 靜坐常恩己過、閒談莫論人非。
返回列表 上一主題