Board logo

標題: 表單按鈕判定時間輸入字串 [打印本頁]

作者: riceeric    時間: 2012-3-29 11:58     標題: 表單按鈕判定時間輸入字串

我在第二欄輸入時第一欄會出現時間
  1. If Target.Column = 2 And Target.Text <> "" Then
  2.     Target.Offset(0, -1) = Now
  3. End If
複製代碼
每整點會彈出個表單
  1. Public Sub UserForm_Show()
  2. Dim WinHnd As Long, SUCCESS As Long

  3. If UserForm.Visible = True Then
  4. UserForm.Hide
  5. End If

  6. WinHnd = FindWindow(vbNullString, Me.Caption)
  7. SUCCESS = SetWindowPos(WinHnd, HWND_TOPMOST, 0, 0, 0, 0, Flags)
  8. UserForm.Show
  9. End Sub
複製代碼
而在一個表單上有個按鈕使表單消失
  1. Private Sub CommandButton1_Click()
  2.     UserForm.Hide
  3. End Sub
複製代碼
問題來了∼我想要在按鈕按下時,在第一欄時間點之後,第三欄的第一個儲存格增加一些字
這樣要如何做到呢∼
作者: Hsieh    時間: 2012-3-29 12:18

回復 1# riceeric

指定時間做某個動作可使用OnTime方法
只是,你在B欄輸入資料時,A欄顯示當前時間
那表單的出現肯定在此之後,所以應該是直接執行C1字串變化才對
作者: riceeric    時間: 2012-3-29 12:38

回復 2# Hsieh
舉例來說好了

第一欄                                          第二欄                      第三欄
時間                                               A                                  備註
2012/3/29 9:58 AM               2.00                           按下按鈕時間
2012/3/29 10:20 AM               3.00        

我意思指的按下按鈕假設是10:10 AM他會去找到第一欄時間之後的第三欄儲存格增加字串

第一欄                                          第二欄                      第三欄
時間                                               A                                  備註
2012/3/29 9:58 AM               2.00                           按下按鈕時間 10:10 AM
2012/3/29 10:20 AM               3.00
作者: hugh0620    時間: 2012-3-29 13:59

回復 3# riceeric

試試看~ 不過不知道會不會有bug
  1. Sub ex_1()
  2. Dim a As Date
  3. a = Application.Lookup(Now, Sheet1.Range("A:A"))
  4. '先求now的時間落在哪一個數值上
  5. d = Sheet1.Range("A:A").Find(a).Row
  6. '再利用數值找到對應的列(row)
  7. Sheet1.Range("C" & d) = Now
  8. '最後將now放在第三欄第d列
  9. End Sub
複製代碼

作者: GBKEE    時間: 2012-3-29 17:45

本帖最後由 GBKEE 於 2012-3-29 17:57 編輯

回復 1# riceeric
我想要在按鈕按下時,在第一欄時間點之後,第三欄的第一個儲存格增加一些字 這樣要如何做到呢∼
建議用工作表函數
  A欄       B欄
產品    項目個數
香蕉        25
柑橘       38
蘋果        40
梨子       41
公式 敘述(結果)
=MATCH(39,B2:B5,1) 因為沒有完全符合的項目,所以會傳回範圍 B2:B5 中下一個較小的值 (38)。(2)
=MATCH(41,B2:B5.0) 範圍 B2:B5 中 41 的位置。(4)
=MATCH(40,B2:B5,-1) 因為 B2:B5 不是依遞減順序排列,所以會傳回錯誤。(#N/A)

你的檔案中如 第一欄是A欄 ,第三欄是C欄
  1. Option Explicit
  2. Sub Ex()
  3.     Dim D As Variant, D1 As Double
  4.     D1 = Now
  5.     D = Application.Match(D1, [A:A], 1)
  6.     If Not IsError(D) Then
  7.         Range("C" & D) = " 按下按鈕時間 " & Format(Time, "HH:MM AM/PM")
  8.     Else
  9.         MsgBox "找不到時間點 !!!"
  10.     End If
  11. End Sub
複製代碼





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