Board logo

標題: [發問] 請系統輸出日期的日~卻出現資料型態錯誤? [打印本頁]

作者: av8d    時間: 2011-9-23 11:56     標題: 請系統輸出日期的日~卻出現資料型態錯誤?

本帖最後由 av8d 於 2011-9-28 09:28 編輯

D = Day(TextBox1)
MsgBox D

出現資料型態錯誤
年月都沒問題~日不知道為什麼卻出現問題?

附上原檔案[attach]7958[/attach]
作者: GBKEE    時間: 2011-9-23 12:22

回復 1# av8d
要傳上程式碼看看
作者: oobird    時間: 2011-9-23 14:21

TextBox為文字型態
你無法Day(TextBox1)
許多朋友總是不願說清楚問題
TextBox1是在工作表上的OLEObjects還是在userform中
要操作它的代碼是有分別的。
作者: av8d    時間: 2011-9-25 00:26

本帖最後由 av8d 於 2011-9-25 00:27 編輯

回復 3# oobird


    O大謝謝你~他是在userform中的~您真細心~我原本還在想沒原檔怎麼PO~被您一眼就看出來了!

可是阿  我用  Year(TextBox1) 和  Month(TextBox1)  都可以使用~不知道為什麼只有Day呢?
作者: luhpro    時間: 2011-9-25 08:10

回復 4# av8d
我剛剛測試了一下並不會發生你所說的問題呢?
我是先新增一個 UserForm 在於其上新增一個 TextBox1 與 功能按鈕(cbOk)
再透過 Sheet1 的 SelectionChange 觸發事件來執行輸入作業.
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.   UserForm1.Show
  3. End Sub
複製代碼
  1. Private Sub cbOk_Click()
  2.   Dim B, C, D
  3.   B = (Year(TextBox1))
  4.   C = (Month(TextBox1))
  5.   D = (Day(TextBox1))
  6.   
  7.   MsgBox ("你輸入的日期是 : " & B & " 年 " & C & " 月 " & D & " 日")
  8.   UserForm1.Hide
  9. End Sub
複製代碼
而你的程式之所以會發生錯誤我猜測有兩個可能:
1.  年、月兩者與 日 的變數其宣告格式不同或是不在同一區域.
2.  引用上述三者的程式不在同一區域.
作者: av8d    時間: 2011-9-27 15:19

D = Day(TextBox1)
原來是
D = (Day(TextBox1))
前後沒+括號的關係~謝謝您!
作者: Hsieh    時間: 2011-9-27 15:45

問題肯定不是出在括號
語法上D=(Day(TextBox1))
這最外圍括號是多餘的
作者: GBKEE    時間: 2011-9-27 15:57

回復 6# av8d
未何不附上 程式碼 讓大家在摸象.
作者: jimmyhk    時間: 2011-9-27 16:36

回復 8# GBKEE


他好像已經解決問題了...
作者: av8d    時間: 2011-9-27 16:52

本帖最後由 av8d 於 2011-9-28 09:17 編輯

回復 5# luhpro


    對了我該如何把組合出來的字變成日期格式
2011/9/27
Y &"/" & M & "/" & D
日期格式

附上原檔
[attach]7957[/attach]
作者: GBKEE    時間: 2011-9-27 16:57

回復 9# jimmyhk


   
問題肯定不是出在括號
語法上D=(Day(TextBox1))
這最外圍括號是多餘的

作者: luhpro    時間: 2011-9-27 21:58

本帖最後由 luhpro 於 2011-9-27 22:01 編輯
問題肯定不是出在括號
語法上D=(Day(TextBox1))
這最外圍括號是多餘的
Hsieh 發表於 2011-9-27 15:45

晤...
問題的確不應出現在括號,
Post 文中的括號是因為測試時我是分別用 MsgBox(Day(TextBox1)) 秀出結果來的,
後來套用到樓主的程式時沒注意到要把括號拿掉,
雖然有沒括號結果都是相同的,
但是卻造成了樓主的誤解, 很抱歉.

回復  luhpro
對了我該如何把組合出來的字變成日期格式
2011/9/27
Y &"/" & M & "/" & D
日期 ...
av8d 發表於 2011-9-27 16:52

DateSerial(2011, 9, 27)
這個指令只要搜尋 "日期" 就可以找到,
多多善用 F1 按鍵的說明功能可以多學很多東西喔.
作者: av8d    時間: 2011-9-28 09:27

回復 12# luhpro


    感謝各位大大~
我PO一下問題~已加入您提供的資訊
Private Sub CommandButton1_Click()
'資料建檔
    Y = (Year(TextBoxM))
    M = (Month(TextBoxM))
    D = (Day(TextBoxM))
    N1 = TextBoxN1
    N2 = TextBoxN2
    N3 = Round(N1 / N2)
    For i = (M + 1) To (M + N2)
        If i > 12 Then
        Sheets("Data").Cells(Rows.Count, "A").End(3)(2, 1).Resize(1, 5) = Array(DateSerial(Y & "/" & (i - 12) & "/" & D), "分期付款", N3, TextBox1, TextBox2)
        Else
        Sheets("Data").Cells(Rows.Count, "A").End(3)(2, 1).Resize(1, 5) = Array(DateSerial(Y & "/" & i & "/" & D), "分期付款", N3, TextBox1, TextBox2)
        End If
    Next
    Unload Me
End Sub

無法執行
作者: luhpro    時間: 2011-10-20 21:23

回復  luhpro
感謝各位大大~
我PO一下問題~已加入您提供的資訊
Private Sub CommandButton1_Cl ...
av8d 發表於 2011-9-28 09:27

發生錯誤的關鍵在於 DateSerial 中的參數是 3 個 "數值" 而非 "字串" :
故而只要把 & "/" &  改成 ,  即可
[attach]8285[/attach]

另 : 個人觀點, 若一打開檔案就看到一片黑, 會讓人感覺不舒服,
建議寧可空白到什麼都看不到也比整片黑嘛嘛要好.
作者: jimmyhk    時間: 2011-10-20 23:27

回復 14# luhpro


原來可以這樣處理......




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