標題:
怎麼才能在萬年曆上增加時間
[打印本頁]
作者:
Jared
時間:
2014-4-16 16:06
標題:
怎麼才能在萬年曆上增加時間
想請問大大
如果我希望萬年曆上面,能夠增加時間的欄位
程式的部分要怎麼添加上去
好像加在哪裡都不對
[attach]18039[/attach] [attach]18040[/attach]
目前只有顯示日期 2014/01/01
要怎麼樣才能顯示 2014/01/01 12:00
如果沒有填寫完畢 會提示時間欄位沒有填寫完成
測試檔案 [attach]18041[/attach]
希望有大大可以解決我的疑問
我這裡也會繼續測試看看,感激不盡!
作者:
GBKEE
時間:
2014-4-17 08:53
回復
1#
Jared
[attach]18057[/attach]
Private Sub 萬年曆()
Dim OBtop As Integer, OBLeft As Integer, R As Integer, W As Integer, i As Date
R = Label1.Top + 30
ReDim F_OB(1 To Day(DateSerial(ComboBox1, ComboBox2.Value + 1, 0)))
For i = DateSerial(ComboBox1, ComboBox2, 1) To DateSerial(ComboBox1, ComboBox2.Value + 1, 0) '年月1日到31日
W = Weekday(i) '位置
'With包覆程式為天數運算
With Controls.Add("Forms.OptionButton.1", i) 'Controls為控制項;OptionButton為單選紐
.Visible = True
.ControlTipText = i
.Top = R '最上面那排
.Left = Controls("Label" & W).Left '第一行呈現位置
.Height = 15 '高度
.Width = 30 '寬度
.Caption = Day(i) '計算當月最後一天天數
End With
Set F_OB(Day(i)).OB = Controls(i & "") '& c '單選紐會彈跳出訊息
If Weekday(i) = 7 And Month(i) = Month(i + 1) Then
R = R + 30 '當位置等於7,R就加30 '** 備註 要考慮到同月份至少還有一天 **
End If
Next
Me.Frame1.Top = R + 30 '調整 時間的位置
Me.Height = R + Frame1.Height + 60 '調整 表單的高度
End Sub
複製代碼
Option Explicit
Public WithEvents OB As MSForms.OptionButton
Private Sub OB_Click()
Dim h As String, m As String
With UserForm1
h = "00 時 "
m = "00 分 "
With .TextBox1
If Val(.Text) >= 0 And Val(.Text) <= 24 Then h = Format(Val(.Text), "00 時 ")
End With
With .TextBox2
If Val(.Text) >= 0 And Val(.Text) <= 60 Then m = Format(Val(.Text), "00 分")
End With
test.TextBox1.Value = OB.ControlTipText & " " & h & m
.Hide
End With
End Sub
複製代碼
作者:
Jared
時間:
2014-4-17 10:36
回復
2#
GBKEE
感謝大大的協助
我再測試看看
另外,我昨天下午有寫另外一個版本
若是沒有填寫時間
則會出現警告提示
點選(時)會清除日期選擇並填上『00』分
勉強可以使用
但我想應該還有更好的方式
[attach]18059[/attach]
再次感謝大大
希望自己能再更上一層( ^^ )
作者:
GBKEE
時間:
2014-4-17 11:28
回復
3#
Jared
另可使 OptionButton 不可用
Option Explicit
Public WithEvents OB As MSForms.OptionButton
Public WithEvents Tx As MSForms.TextBox
'UserForm_Initialize 中設立 TextBox1,TextBox2
Private Sub Tx_Change()
Dim Msg As Boolean, E As Control
With Tx
If IsNumeric(.Text) Then
If Tx.Name = "TextBox1" Then
If Val(.Text) > 0 And Val(.Text) <= 24 Then Msg = True
ElseIf Tx.Name = "TextBox2" Then
If Val(.Text) > 0 And Val(.Text) <= 60 Then Msg = True
End If
End If
End With
For Each E In Tx.Parent.Controls
If TypeName(E) = "OptionButton" Then E.Enabled = Msg
Next
End Sub
複製代碼
作者:
Hsieh
時間:
2014-4-17 23:39
本帖最後由 Hsieh 於 2014-4-17 23:55 編輯
回復
1#
Jared
物件類別模組中
Private Sub OB_Click()
test.TextBox1.Value = OB.ControlTipText & " " & UserForm1.TextBox1.Text & ":" & UserForm1.TextBox2.Text
Unload UserForm1
End Sub
複製代碼
UserForm1模組中
Private Sub UserForm_Initialize()
Dim i As Integer, hm$
For i = 2013 To 2020
ComboBox1.AddItem i
Next
ComboBox1.Value = Year(Date)
For i = 1 To 12
ComboBox2.AddItem i
Next
ComboBox2.Value = Month(Date)
hm = Format(Now, "hh:mm")
TextBox1.Text = Split(hm, ":")(0)
TextBox2.Text = Split(hm, ":")(1)
End Sub
複製代碼
作者:
Jared
時間:
2014-4-22 10:52
回復
4#
GBKEE
感謝大大的回覆!
但是如果改成這樣,就沒辦法把想要的日期跟時間傳送到空白欄位了(@@)
作者:
Jared
時間:
2014-4-22 11:00
回復
5#
Hsieh
謝謝大大!我都沒想到可以抓取系統時間
學到一招了~ ^^
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)