Board logo

標題: 如何做到對日期的checking [打印本頁]

作者: patrickccs    時間: 2014-9-4 07:52     標題: 如何做到對日期的checking

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

請見附檔

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

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

謝謝
作者: owen06    時間: 2014-9-4 10:04

回復 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
複製代碼

作者: patrickccs    時間: 2014-9-5 12:41

回復  patrickccs

參考看看
owen06 發表於 2014-9-4 10:04
已成功嘗試, 謝謝
作者: patrickccs    時間: 2014-9-5 12:46

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

那我應該從哪一個command指令學習?? 我完全沒有方向
作者: owen06    時間: 2014-9-5 21:28

回復 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
複製代碼

作者: hzc386    時間: 2014-9-6 00:27

測試成功,不過要注意sheet名稱的不同才不會出現錯誤
作者: patrickccs    時間: 2014-9-8 08:23

回復 5# owen06 測試ok, 如果我想用command button 去執行這個指令, 要怎麼改?
作者: owen06    時間: 2014-9-8 10:53

本帖最後由 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
複製代碼

作者: patrickccs    時間: 2014-9-10 09:59

回復 8# owen06

測試成功, 謝謝!

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

回復 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
複製代碼

作者: patrickccs    時間: 2014-9-10 12:39

回復 10# owen06

成功了, 非常感謝, 我最後一個問題是如果我想在另一張sheet執行這張sheet這個指令的話,要怎樣做?

非常非常感謝
作者: owen06    時間: 2014-9-10 12:57

本帖最後由 owen06 於 2014-9-10 12:58 編輯

回復 11# patrickccs


    如果想在其他工作表執行另一個工作表的內容,那就要在指令的範圍前面,加上明確的sheet名稱,才不會迷路。
    例如

Private Sub CommandButton1_Click()
sheets("sheet1").[b15:G15].Clear
For Each mr In sheets("sheet1").Range("a2:a" & sheets("sheet1").[a1].End(4).Row)
      If mr = sheets("sheet1").[a15] Then
        tg = mr.Row
      End If
On Error Resume Next
     Next
   For i = 2 To 7
     sheets("sheet1").Cells(15, i) = sheets("sheet1").Cells(tg, i) - sheets("sheet1").Cells(tg - 1, i)
Next
End Sub
作者: patrickccs    時間: 2014-9-10 13:24

回復 12# owen06

明白了, 真的感謝你




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