Board logo

標題: [發問] VB更改win10系統時間,權限問題 [打印本頁]

作者: blue2263    時間: 2016-11-5 12:28     標題: VB更改win10系統時間,權限問題

下面程式碼,在Win7系統執行沒有問題,但如在Win10系統執行會出現下圖錯誤
請教大大,此問題要怎麼解決

Date = DateAdd("m", 1, Date) '日期 + 1個月

[attach]25728[/attach]
作者: c_c_lai    時間: 2016-11-5 13:45

回復 1# blue2263
  1.    Date = DateAdd("m", 1, Date)     '  日期 + 1個月
複製代碼
因為 Date 為系統之內在函數,
是不允許使用者任意更動的。
P.S.  "Date" 為系統之保留字 (Reserved Word);
但如果修改為:
  1.    dd = DateAdd("m", 1, Date)     '  日期 + 1個月
複製代碼
則是 OK 的。
作者: blue2263    時間: 2016-11-6 07:02

回復 2# c_c_lai
C大你好
問題是,我在Win7系統執行沒問題,但在Win10系統上,會出現錯誤
不知有沒有更改Win10權限的方法?
作者: c_c_lai    時間: 2016-11-6 07:44

本帖最後由 c_c_lai 於 2016-11-6 07:54 編輯

回復 3# blue2263
一樣是使用同一 Office 版本?
我是用 Office 2010,一測便如同你發生的訊息。
據我所知  Office 2010 語法檢查比較嚴謹,它的
保留字或內在涵式是不能當變數使用拿來被 Assign 值的。
與 Windows  版本無關。
(沒有更改權限 指的就是以上的解說)
作者: blue2263    時間: 2016-11-6 09:22

回復 4# c_c_lai
我用的也是office2010
(沒有更改權限),了解謝謝
感謝C大解答
作者: c_c_lai    時間: 2016-11-6 09:43

本帖最後由 c_c_lai 於 2016-11-6 09:54 編輯

回復 5# blue2263
這三個例子,你用 F8 去執行,便可觀察出來:
  1. Sub Ex()
  2.    Date = DateAdd("m", 1, Date)     '  日期 + 1個月
  3.    MsgBox Date
  4. End Sub
複製代碼
  1. Sub Ex2()
  2.    Dim Date

  3.    Date = DateAdd("m", 1, Date)     '  日期 + 1個月
  4.    MsgBox Date
  5. End Sub
複製代碼
基本上,上兩個用法在正規的程式邏輯語法應用上是不被允許的,
這也是 VB 本身的語法漏洞,到了 Windows 10 內部作業系統程式庫
即將它補正了。
  1. Sub Ex3()
  2.    Dim dd

  3.    dd = DateAdd("m", 1, Date)     '  日期 + 1個月
  4.    MsgBox dd       '  亦為日期型態
  5. End Sub
複製代碼

作者: blue2263    時間: 2016-11-6 13:59

回復 6# c_c_lai
原來如此,了解了
謝謝C大解答
作者: jackyq    時間: 2016-11-6 15:49

本帖最後由 jackyq 於 2016-11-6 15:53 編輯

VBA.Date  本身就是被設計成可以接受賦值的

https://msdn.microsoft.com/en-us/library/office/gg278644.aspx

(1) 回傳系統時間
Returns a Variant (Date) containing the current system date.

(2) 設定系統時間 ( 所以是可以接受  Date = DateAdd("m", 1, Date)  的寫法  )
To set the system date, use the Date statement.




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