- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
13#
發表於 2013-6-24 16:19
| 只看該作者
本帖最後由 GBKEE 於 2013-6-24 16:23 編輯
回復 11# vzcen
B5的格式就不必修改了
B5的內容會顯示成102903, 此為6位數,請問 B5, 10點以前會顯示成95959, 此為5位數- Option Explicit
- Private Sub Worksheet_Calculate()
- Dim Rng As Range
- Static Msg As Boolean '以 Static 陳述式宣告的變數,在程式執行期間,會一直保留內容。
- ' If Time < #10:28:00 AM# Or Time > #1:30:00 PM# Then Exit Sub '非營業日 或 非營業時間
- If Msg = False Then
- 清除舊資料
- Msg = True
- End If
- With Cells(Rows.Count, "C").End(xlUp)
- If .Row = 7 Then
- Set Rng = .Offset(1)
- Else
- Set Rng = .Cells
- End If
- End With
- 'If Rng = "" Or Rng.Text <> Mid([B5].Text, 1, IIf(Len([B5]) = 6, 4, 3)) Then '如果[B5]10點以前的的數值是95959, 5位數 用此程式碼
- If Rng = "" Or Rng.Text <> Mid([B5].Text, 1, 4) Then
- If Rng <> "" Then Set Rng = Rng.Offset(1)
- With Rng
- .NumberFormatLocal = "@"
- '.Cells = Mid([B5].Text, 1, IIf(Len([B5]) = 6, 4, 3)) '如果[B5]10點以前的的數值是95959. 5位數 用此程式碼
- .Cells = Mid([B5].Text, 1, 4)
- .Cells(1, 2) = [B6].Text
- .Cells(1, 3) = [B6].Text
- End With
- 'ElseIf Rng.Text = Mid([B5].Text, 1, IIf(Len([B5]) = 6, 4, 3)) Then '如果[B5]10點以前的的數值是95959. 5位數 用此程式碼
- ElseIf Rng.Text = Mid([B5].Text, 1, 4) Then
- If [B6] > Rng(1, 2) Then Rng(1, 2) = [B6].Text
- If [B6] < Rng(1, 3) Then Rng(1, 3) = [B6].Text
- End If
- End Sub
複製代碼- Private Sub 清除舊資料()
- On Error GoTo Er
- If [營業日] <> Date Then '檢查 定義名稱:"營業日"的值
- Me.Names.Add "營業日", Date '定義名稱:"營業日"的值為當日
- If Weekday(Date, vbMonday) <= 5 Then Range([C8], [E8].End(xlDown)).Clear ' 修改 3#
- End If
- Exit Sub
- Er: '處裡: 沒有定義名稱:"營業日"的錯誤
- Me.Names.Add "營業日", Date '定義名稱:"營業日"的值為當日
- Resume Next '回到錯誤的下一個程式碼:繼續執行
- End Sub
複製代碼 |
|