返回列表 上一主題 發帖

[發問] EXCEL設定某日期到檔案無法開啟

本帖最後由 luhpro 於 2015-4-29 21:52 編輯

回復 30# hueywen_jia
晤...這陣子比較忙...

以下程式碼放在 ThisWorkBook 內:
  1. Public Sub 刪除自己()
  2.     ThisWorkbook.Saved = True
  3.     ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
  4.     Kill ThisWorkbook.FullName
  5.     ThisWorkbook.Close SaveChanges:=False
  6. End Sub

  7. Private Sub Workbook_Open()
  8.   If Date > #5/28/2115# Then 刪除自己 ' 今天為此日期時, 刪除本檔案, 注意 : 檔案刪除後無法復原, 測試時請務必先備份本檔案.
  9. End Sub
複製代碼

TOP

If Date > DateValue("2015/05/01") Then
        MsgBox ("已超使用期間,不可使用。請求助開發者!!")
        Exit Sub
    End If

    Q1 = Application.InputBox(prompt:="請輸入製作者名稱:")
    If Q1 = "Vercent" Then
    Else: MsgBox "密碼錯誤,即將退出!"
    ActiveWorkbook.Close savechanges = False
    End If

TOP

本帖最後由 hueywen_jia 於 2015-5-7 00:27 編輯

感謝luhpro大大,可是我照您給的1-10項的字串放進去不能用! 一樣是放ThisWorkBook裡的OPEN嗎?
小雨

TOP

If Date > DateValue("2015/05/01") Then
        MsgBox ("已超使用期間,不可使用。請求助開發者!!")
  ...
taiwan16699 發表於 2015-5-5 16:59



    大大~我不知道該放哪耶~可以詳細的說明嗎? SORRY~我不會BASIC語法
小雨

TOP

本帖最後由 luhpro 於 2015-5-7 05:36 編輯
感謝luhpro大大,可是我照您給的1-10項的字串放進去不能用! 一樣是放ThisWorkBook裡的OPEN嗎?
hueywen_jia 發表於 2015-5-7 00:25



其實裡面有 刪除自己 跟 ThisWorkBook 的 Open(開啟程式時就會執行,而它在設定的時間到時會呼叫 刪除自己 這個程序) 兩個程序.
底下這一段就是 ThisWorkBook裡的OPEN 程序喔.
  1. Private Sub Workbook_Open()

  2.   If Date > #5/28/2115# Then 刪除自己 ' 今天為此日期時, 刪除本檔案, 注意 : 檔案刪除後無法復原, 測試時請務必先備份本檔案.

  3. End Sub
複製代碼

TOP

回復 35# luhpro

我照您的方式,但卻出現此對話框
   
1

評分人數

    • GBKEE: 不認真學習金錢 -2
小雨

TOP

回復 36# hueywen_jia
這樣的發問太隨便了  
告訴你編譯錯誤且有說明為何不看說明.VBA的說明真的有那麼難理解嗎?
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 luhpro 於 2015-5-11 23:38 編輯
回復  luhpro
我照您的方式,但卻出現此對話框
hueywen_jia 發表於 2015-5-10 20:59

你的 Then 後面沒指令.

If...Then... 指令的其中兩種語法:
1.
If  條件式 Then 要執行的指令

(此法為當條件成立時,
程式會執行 Then 後面的指令,
否則不執行該指令,
且不論結果如何執行完畢後會繼續執行下一行的指令,
意即 If 的判斷與執行是在該行跑完後就已經結束)

2.
If  條件式 Then
   要執行的指令
End If

(此法為當條件成立時,
程式會執行 Then 的下一行直到 End If 前的每一行指令,
意即 If 的判斷與執行是在該行開始起,
一直到 End If 指令才結束)

需留意兩種語法的差別,
Then 後面沒指令時就一定要有 End If
反之亦同.

是的,當你條件成立後只需要執行一行指令時,用第 1 種語法就可以了,
若為多行則應用第 2 種語法.

另外,你在套用的時候,
應該要先都全部 Copy 過去,
再依據你的需求做調整.

例如你本來就有 Private Sub Workbook_Open() 時,
Copy 過去會變成有兩個 Open 程序,
這時就要試著把它們整合在同一個 Open 程序內,
看是要前後放,
還是將其中一個程序插在另一個程序的內部.
再刪掉多的那兩行 Sub Workbook_Open 與 End Sub.

除非你確實已經了解了那些指令式在做甚麼,
不然不建議隨意刪減.

完整的該行是:
If Date > #5/28/2115# Then 刪除自己
刪除自己' 前不是在其後,
所以它是一個指令.
且你也要把 Sub 刪除自己 到 End Sub 部分 Copy 過去,
不然一樣會發生找不到 刪除自己 程序的錯誤.

TOP

回復 38# luhpro


   
我照那些字串COPY進去了,可是它還是出現"編譯錯誤:沒有定義這個Sub或Sunciton 然後在刪除自己那反黑了,是找不到這個"刪除自己" 嗎
小雨

TOP

回復  luhpro
我照那些字串COPY進去了,可是它還是出現"編譯錯誤:沒有定義這個Sub或Sunciton 然 ...
hueywen_jia 發表於 2015-5-12 21:13

是啊,
38# 最末尾有說了:
且你也要把 Sub 刪除自己 到 End Sub 部分 Copy 過去,
不然一樣會發生找不到 刪除自己 程序的錯誤.

TOP

        靜思自在 : 自己害自己,莫過於亂發脾氣。
返回列表 上一主題