Câu hỏi về Runing Frame !!!

Liên hệ QC

khoa140383

Thành viên hoạt động
Tham gia
2/10/09
Bài viết
101
Được thích
34
Hôm nay đang ngồi nghịch về giao diện cho form bên VB6 thì tìm được cái About rất là Pro. Tuy nhiên khi em áp dụng qua VBA thì lại không được vì bên VBA không có cái timer. Nghĩ ra được 1 cách là tận dụng cái Form của bác tedaynui để chạy... Chạy thì Ok, nhưng phải dựa vào cái Progress . Các bác xem có cách nào không cần cái Progress mà vẫn chạy được như File đính kèm không nha.
Cụ thể là : + Khi mở userform thì textbox.value thay đổi từ 1 đến 100
+ Khi textbox1.value thay đổi thì cái Frame.Top thay đổi theo
+ Khi textbox.value bằng 100 thì Frame.Top ở tại 1 vị trí được định sẵng.

>> Vì cái Progress là control không có sẵng ở nhiều máy nên em mới nảy sinh ra ý tưởng này. Các bác hổ trợ giúp em nha.

Nice weekends !!!
 

File đính kèm

Hôm nay đang ngồi nghịch về giao diện cho form bên VB6 thì tìm được cái About rất là Pro. Tuy nhiên khi em áp dụng qua VBA thì lại không được vì bên VBA không có cái timer. Nghĩ ra được 1 cách là tận dụng cái Form của bác tedaynui để chạy... Chạy thì Ok, nhưng phải dựa vào cái Progress . Các bác xem có cách nào không cần cái Progress mà vẫn chạy được như File đính kèm không nha.
Cụ thể là : + Khi mở userform thì textbox.value thay đổi từ 1 đến 100
+ Khi textbox1.value thay đổi thì cái Frame.Top thay đổi theo
+ Khi textbox.value bằng 100 thì Frame.Top ở tại 1 vị trí được định sẵng.

>> Vì cái Progress là control không có sẵng ở nhiều máy nên em mới nảy sinh ra ý tưởng này. Các bác hổ trợ giúp em nha.

Nice weekends !!!
Trong VBA không có Timer Control, ta có thể dùng hàm API để thay thế.
Tôi làm như sau:
1> Trong Module
PHP:
Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Public hWnd As Long
PHP:
Sub StartTimer()
  StopTimer
  SetTimer hWnd, 1, 10, AddressOf TimerProc
End Sub
PHP:
Sub StopTimer()
  KillTimer hWnd, 1
End Sub
PHP:
Sub TimerProc()
  DoEvents
  With UserForm1
    .a = Val(.a) + 1
    .S.Top = .S.Top - 1
    If .a = "300" Then StopTimer
  End With
End Sub
PHP:
Sub SHOW()
  UserForm1.SHOW
End Sub
2> Trong UserForm
PHP:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
PHP:
Private Sub a1_Click()
  Me.a.Text = ""
  Me.S.Top = Me.Height
  StartTimer
End Sub
PHP:
Private Sub UserForm_Initialize()
  hWnd = FindWindow("ThunderDFrame", Me.Caption)
  Me.a.Text = ""
  Me.S.Top = Me.Height
  StartTimer
End Sub
PHP:
Private Sub CANCEL_Click()
  Unload Me
End Sub
PHP:
Private Sub UserForm_Terminate()
  StopTimer
End Sub
 

File đính kèm

Upvote 0
Cám ơn bác Ndu rất nhiều.:-=

Chúc bác có những ngày cuối tuần thật vui nha !!!
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom