Tặng tiện ích CALENDAR phiên bản cuối cùng (Excel 2007 trở về sau).

Liên hệ QC

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,662
Được thích
16,718
Giới tính
Nam
Qua nhiều lần cải tiến và tôi nghĩ tới đây là nên chấm dứt chuyện Lịch này. Cho nên tôi đã lường hầu hết các trường hợp có thể xảy ra trên các đối tượng, các Range, các UserForm để đối tượng đó nhận ngày tháng sao cho Calendar show ra tại vị trí nơi nhận ngày tháng (có sự trợ giúp to lớn trong việc xác định vị trí của bạn doveandrose, xin cảm ơn bạn).

Nếu các bạn có xài Excel 2007 trở về sau thì nên tải về, giờ đây tôi cũng sẽ lưu file từ 2007 trở về sau mà không phải convert sang 2003 nữa.

Với phiên bản lần này, các bạn được tham khảo lập trình, cách thức add controls và cách tạo sự kiện cho các ActiveX Controls trên Sheet như TextBox, Frame, MultiPage (nguồn trong File Hướng Dẫn).

PHP:
Option Explicit
Private WithEvents frmTextBox1 As MSForms.TextBox
Private WithEvents frmTextBox2 As MSForms.TextBox
Private WithEvents frmTextBox3 As MSForms.TextBox
Private WithEvents mtpTextBox1 As MSForms.TextBox
Private WithEvents mtpTextBox2 As MSForms.TextBox
Private WithEvents mtpTextBox3 As MSForms.TextBox
''******************************************************************************************************
''SHEET EVENT:
''******************************************************************************************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 2 And Target.Row > 10 And Target.Row < 21 Then
        Run "CALENDAR.xlam!CalendarExit"
        Run "CALENDAR.xlam!Calendar", Target
    End If
End Sub


Private Sub Worksheet_Deactivate()
    EraseFrameControlEvent
End Sub
''******************************************************************************************************
''CONTROL BELONG TO SHEET EVENT:
''******************************************************************************************************
Private Sub CommandButton1_Click()
    Frame.Show
End Sub

Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Run "CALENDAR.xlam!Calendar", TextBox1
End Sub

Private Sub Frame1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    CreateFrameControlEvent
End Sub

Private Sub MultiPage1_MouseMove(ByVal Index As Long, ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    CreateFrameControlEvent
End Sub
''******************************************************************************************************
''CREATE EVENT FOR SOME TEXTBOXES INTO FRAME ON SHEET EVENT:
''******************************************************************************************************
Sub CreateFrameControlEvent()
    If frmTextBox1 Is Nothing Then
        Set frmTextBox1 = Sheet2.Frame1.Controls("TextBox1")
        Set frmTextBox2 = Sheet2.Frame1.Controls("TextBox2")
        Set frmTextBox3 = Sheet2.Frame1.Controls("TextBox3")
        Set mtpTextBox1 = Sheet2.MultiPage1.Pages(1).Controls("TextBox1")
        Set mtpTextBox2 = Sheet2.MultiPage1.Pages(0).Controls("TextBox2")
        Set mtpTextBox3 = Sheet2.MultiPage1.Pages(1).Controls("TextBox3")
    End If
End Sub

Sub EraseFrameControlEvent()
    Set frmTextBox1 = Nothing
    Set frmTextBox2 = Nothing
    Set frmTextBox3 = Nothing
    Set mtpTextBox1 = Nothing
    Set mtpTextBox2 = Nothing
    Set mtpTextBox3 = Nothing
End Sub
''******************************************************************************************************
''CONTROL BELONG TO FRAME ON SHEET EVENT:
''******************************************************************************************************
Private Sub frmTextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Run "CALENDAR.xlam!Calendar", frmTextBox1
End Sub

Private Sub frmTextBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Run "CALENDAR.xlam!Calendar", frmTextBox2
End Sub

Private Sub frmTextBox3_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Run "CALENDAR.xlam!Calendar", frmTextBox3
End Sub
''******************************************************************************************************
''CONTROL BELONG TO MULTIPAGE ON SHEET EVENT:
''******************************************************************************************************
Private Sub mtpTextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Run "CALENDAR.xlam!Calendar", mtpTextBox1
End Sub

Private Sub mtpTextBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Run "CALENDAR.xlam!Calendar", mtpTextBox2
End Sub

Private Sub mtpTextBox3_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Run "CALENDAR.xlam!Calendar", mtpTextBox3
End Sub
''******************************************************************************************************

Một cải tiến nữa là trên Tab Home của dải Ribbon, tôi có thêm 1 Icon mặt cười (Happy Face) để tiện cho việc show lịch.

ThucHanh.jpg

Với người lập trình khi sử dụng Calendar này lại thuận tiện hơn với cấu trúc giản tiện:

Run "CALENDAR.xlam!Calendar", Range("C5")

Run "CALENDAR.xlam!Calendar", TextBox1


Quá đơn giản để nhúng lịch vào chương trình của mình phải không!
 

File đính kèm

  • CALENDAR.xlam
    122.1 KB · Đọc: 300
  • HuongDan.xlsm
    50.3 KB · Đọc: 301
Lần chỉnh sửa cuối:
anh Nghĩa cho em hỏi
bây giờ tiện ích nó nằm trên chuột phải luôn rồi (cái mặt cười màu vàng ấy).
em đã gỡ tiện ích ra nhưng vẫn còn. làm sao gỡ triệt để được anh
Hỏng hiểu? Thử mở Immediate rồi copy dòng code dưới đây rồi chọn ngay dòng code đó bấm Enter xem:

Application.CommandBars("Cell").Reset
 
Upvote 0
Qua nhiều lần cải tiến và tôi nghĩ tới đây là nên chấm dứt chuyện Lịch này. Cho nên tôi đã lường hầu hết các trường hợp có thể xảy ra trên các đối tượng, các Range, các UserForm để đối tượng đó nhận ngày tháng sao cho Calendar show ra tại vị trí nơi nhận ngày tháng (có sự trợ giúp to lớn trong việc xác định vị trí của bạn doveandrose, xin cảm ơn bạn).

Nếu các bạn có xài Excel 2007 trở về sau thì nên tải về, giờ đây tôi cũng sẽ lưu file từ 2007 trở về sau mà không phải convert sang 2003 nữa.

Với phiên bản lần này, các bạn được tham khảo lập trình, cách thức add controls và cách tạo sự kiện cho các ActiveX Controls trên Sheet như TextBox, Frame, MultiPage (nguồn trong File Hướng Dẫn).

Quá đơn giản để nhúng lịch vào chương trình của mình phải không!
anh Nghĩa cho em hỏi làm sao mất được cái viền xung quanh User Form thế anh
 
Lần chỉnh sửa cuối:
Upvote 0
anh Nghĩa cho em hỏi làm sao mất được cái viền xung quanh User Form thế anh
Trong UserForm đó bạn, nó có chứa các hàm API:

Mã:
#If VBA7 And Win64 Then 'Office 64-bit
    Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As LongPtr) As LongPtr
    Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As LongPtr, ByVal dwNewLong As LongPtr) As LongPtr
    Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#Else ' Office 32-bit
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#End If

Các constant:

Mã:
Const WS_BORDER = &H800000
Const WS_CAPTION = &HC00000
Const WS_THICKFRAME = &H40000
Const WS_DLGFRAME = &H400000
Const WS_EX_DLGMODALFRAME = &H1&
Const GWL_STYLE = (-16)
Const GWL_EXSTYLE = (-20)
Const SWP_FRAMECHANGED = &H20

Và khi load form lên có thủ tục:

Mã:
Private Sub UserForm_Initialize()
    pubCalendarShow = True
    Dim FWd As Long, TitleHeigh As Double
    TitleHeigh = Me.Height - Me.InsideHeight
    FWd = FindWindow("ThunderDFrame", Me.Caption)
    SetWindowLong FWd, GWL_STYLE, GetWindowLong(FWd, GWL_STYLE) And Not _
    (WS_BORDER Or WS_CAPTION Or WS_THICKFRAME Or WS_DLGFRAME)
    SetWindowLong FWd, GWL_EXSTYLE, GetWindowLong(FWd, GWL_EXSTYLE) And Not WS_EX_DLGMODALFRAME
    Me.Height = Me.Height - TitleHeigh
End Sub
 
Upvote 0
Trong UserForm đó bạn, nó có chứa các hàm API:

Mã:
Private Sub UserForm_Initialize()
    pubCalendarShow = True
    Dim FWd As Long, TitleHeigh As Double
    TitleHeigh = Me.Height - Me.InsideHeight
    FWd = FindWindow("[COLOR=#ff0000]ThunderDFrame[/COLOR]", Me.Caption)
    SetWindowLong FWd, GWL_STYLE, GetWindowLong(FWd, GWL_STYLE) And Not _
    (WS_BORDER Or WS_CAPTION Or WS_THICKFRAME Or WS_DLGFRAME)
    SetWindowLong FWd, GWL_EXSTYLE, GetWindowLong(FWd, GWL_EXSTYLE) And Not WS_EX_DLGMODALFRAME
    Me.Height = Me.Height - TitleHeigh
End Sub
chỗ màu đỏ em không hiểu anh Nghĩa ơi./-*+/
em có đặt me.caption là 1 chuỗi khác thì nó không ra. mà đặt thành ThunderDFrame thì lại chạy được
 
Lần chỉnh sửa cuối:
Upvote 0
chỗ màu đỏ em không hiểu anh Nghĩa ơi./-*+/
em có đặt me.caption là 1 chuỗi khác thì nó không ra. mà đặt thành ThunderDFrame thì lại chạy được
Nếu như tôi gọi tên của bạn mà không đúng thì bạn có trả lời hay không?

Mỗi Window (trong tập hợp Windows) có một lớp (class) liên kết với nó. Các thông tin trong class này là những gì mà nó được định nghĩa cũng như cách nó nhìn thấy và cách nó hoạt động như thế nào.

Mỗi window class của một UserForm phụ thuộc vào phiên bản Excel mà bạn đang sử dụng.

Với phiên bản 2000 trở về sau class name (tên lớp) của UserForm là "ThunderDFrame", nhưng trước đó tên của nó là "ThunderXFrame".

Riêng Caption của UserForm, bạn muốn đặt làm sao thì bạn đặt nhé! Chẳng liên quan gì đến ThunderDFrame hết đó. Nhưng bạn cần phải để nguyên câu này, không có chỉnh sửa gì hết nha:

FWd = FindWindow("ThunderDFrame", Me.Caption)
 
Lần chỉnh sửa cuối:
Upvote 0
Qua nhiều lần cải tiến và tôi nghĩ tới đây là nên chấm dứt chuyện Lịch này. Cho nên tôi đã lường hầu hết các trường hợp có thể xảy ra trên các đối tượng, các Range, các UserForm để đối tượng đó nhận ngày tháng sao cho Calendar show ra tại vị trí nơi nhận ngày tháng (có sự trợ giúp to lớn trong việc xác định vị trí của bạn doveandrose, xin cảm ơn bạn).

Nếu các bạn có xài Excel 2007 trở về sau thì nên tải về, giờ đây tôi cũng sẽ lưu file từ 2007 trở về sau mà không phải convert sang 2003 nữa.

Với phiên bản lần này, các bạn được tham khảo lập trình, cách thức add controls và cách tạo sự kiện cho các ActiveX Controls trên Sheet như TextBox, Frame, MultiPage (nguồn trong File Hướng Dẫn).

[GPECODE=vb]
Option Explicit
Private WithEvents frmTextBox1 As MSForms.TextBox
Private WithEvents frmTextBox2 As MSForms.TextBox
Private WithEvents frmTextBox3 As MSForms.TextBox
Private WithEvents mtpTextBox1 As MSForms.TextBox
Private WithEvents mtpTextBox2 As MSForms.TextBox
Private WithEvents mtpTextBox3 As MSForms.TextBox
''******************************************************************************************************
''SHEET EVENT:
''******************************************************************************************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 And Target.Row > 10 And Target.Row < 21 Then
Run "CALENDAR.xlam!CalendarExit"
Run "CALENDAR.xlam!Calendar", Target
End If
End Sub


Private Sub Worksheet_Deactivate()
EraseFrameControlEvent
End Sub
''******************************************************************************************************
''CONTROL BELONG TO SHEET EVENT:
''******************************************************************************************************
Private Sub CommandButton1_Click()
Frame.Show
End Sub

Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Run "CALENDAR.xlam!Calendar", TextBox1
End Sub

Private Sub Frame1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CreateFrameControlEvent
End Sub

Private Sub MultiPage1_MouseMove(ByVal Index As Long, ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CreateFrameControlEvent
End Sub
''******************************************************************************************************
''CREATE EVENT FOR SOME TEXTBOXES INTO FRAME ON SHEET EVENT:
''******************************************************************************************************
Sub CreateFrameControlEvent()
If frmTextBox1 Is Nothing Then
Set frmTextBox1 = Sheet2.Frame1.Controls("TextBox1")
Set frmTextBox2 = Sheet2.Frame1.Controls("TextBox2")
Set frmTextBox3 = Sheet2.Frame1.Controls("TextBox3")
Set mtpTextBox1 = Sheet2.MultiPage1.Pages(1).Controls("TextBox1")
Set mtpTextBox2 = Sheet2.MultiPage1.Pages(0).Controls("TextBox2")
Set mtpTextBox3 = Sheet2.MultiPage1.Pages(1).Controls("TextBox3")
End If
End Sub

Sub EraseFrameControlEvent()
Set frmTextBox1 = Nothing
Set frmTextBox2 = Nothing
Set frmTextBox3 = Nothing
Set mtpTextBox1 = Nothing
Set mtpTextBox2 = Nothing
Set mtpTextBox3 = Nothing
End Sub
''******************************************************************************************************
''CONTROL BELONG TO FRAME ON SHEET EVENT:
''******************************************************************************************************
Private Sub frmTextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Run "CALENDAR.xlam!Calendar", frmTextBox1
End Sub

Private Sub frmTextBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Run "CALENDAR.xlam!Calendar", frmTextBox2
End Sub

Private Sub frmTextBox3_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Run "CALENDAR.xlam!Calendar", frmTextBox3
End Sub
''******************************************************************************************************
''CONTROL BELONG TO MULTIPAGE ON SHEET EVENT:
''******************************************************************************************************
Private Sub mtpTextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Run "CALENDAR.xlam!Calendar", mtpTextBox1
End Sub

Private Sub mtpTextBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Run "CALENDAR.xlam!Calendar", mtpTextBox2
End Sub

Private Sub mtpTextBox3_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Run "CALENDAR.xlam!Calendar", mtpTextBox3
End Sub
''******************************************************************************************************
[/GPECODE]

Một cải tiến nữa là trên Tab Home của dải Ribbon, tôi có thêm 1 Icon mặt cười (Happy Face) để tiện cho việc show lịch.

attachment.php


Với người lập trình khi sử dụng Calendar này lại thuận tiện hơn với cấu trúc giản tiện:

Run "CALENDAR.xlam!Calendar", Range("C5")

Run "CALENDAR.xlam!Calendar", TextBox1


Quá đơn giản để nhúng lịch vào chương trình của mình phải không!

Anh Nghĩa cho em hỏi
Em muốn đưa lịch của anh vào file của em (Em đã Import các Module và Form lịch vào file rồi). Mong muốn là khi file đó chép đi đến tất cả các máy (những máy này chưa được cài addin Lich) đều có thể chạy Form Lịch của anh trên Form hoặc trên Sheet

Trong code của anh em thấy có các lệnh "Run "CALENDAR.xlam!Calendar", TextBox1" ,.... Em cũng có thử chỉnh sữa lại thành Run usfCALENDAR nhưng không được.
Rất mong được anh giúp đỡ,
Trân trọng cảm ơn
 
Upvote 0
Anh Nghĩa cho em hỏi
Em muốn đưa lịch của anh vào file của em (Em đã Import các Module và Form lịch vào file rồi). Mong muốn là khi file đó chép đi đến tất cả các máy (những máy này chưa được cài addin Lich) đều có thể chạy Form Lịch của anh trên Form hoặc trên Sheet

Trong code của anh em thấy có các lệnh "Run "CALENDAR.xlam!Calendar", TextBox1" ,.... Em cũng có thử chỉnh sữa lại thành Run usfCALENDAR nhưng không được.
Rất mong được anh giúp đỡ,
Trân trọng cảm ơn
chỗ "Run "CALENDAR.xlam!Calendar", TextBox1" tức là chạy lệnh gọi Calendar trên TexBox1 đường dẫn là "CALENDAR.xlam!Calendar" theo mình hiểu thì là vậy. bạn sửa lại thành ​Run usfCALENDAR lấy gì nó biết đường dẫn ở đâu mà chạy
 
Upvote 0
chỗ "Run "CALENDAR.xlam!Calendar", TextBox1" tức là chạy lệnh gọi Calendar trên TexBox1 đường dẫn là "CALENDAR.xlam!Calendar" theo mình hiểu thì là vậy. bạn sửa lại thành ​Run usfCALENDAR lấy gì nó biết đường dẫn ở đâu mà chạy
"Run "CALENDAR.xlam!Calendar", TextBox1" là chạy từ addin CALENDAR. Nhưng mình đã mở addin đó ra và chép các module, form vô file rồi, form lich có tên là usfCALENDAR

P/s: Trên Sheet thì mình đã chạy Macro CalShow được rồi.
Trên textbox trên Form chưa được, rất mong được sự giúp đỡ của tất cả các anh chị
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Nếu như tôi gọi tên của bạn mà không đúng thì bạn có trả lời hay không?

Mỗi Window (trong tập hợp Windows) có một lớp (class) liên kết với nó. Các thông tin trong class này là những gì mà nó được định nghĩa cũng như cách nó nhìn thấy và cách nó hoạt động như thế nào.

Mỗi window class của một UserForm phụ thuộc vào phiên bản Excel mà bạn đang sử dụng.

Với phiên bản 2000 trở về sau class name (tên lớp) của UserForm là "ThunderDFrame", nhưng trước đó tên của nó là "ThunderXFrame".

Riêng Caption của UserForm, bạn muốn đặt làm sao thì bạn đặt nhé! Chẳng liên quan gì đến ThunderDFrame hết đó. Nhưng bạn cần phải để nguyên câu này, không có chỉnh sửa gì hết nha:

FWd = FindWindow("ThunderDFrame", Me.Caption)
anh Nghĩa cho em hỏi thêm. em có đọc lời dẫn của Tiện ích thì thấy có việc xác định vị trí.
vậy cho em hỏi là đoạn nào vậy anh
ví dụ dùng sự kiện

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


End Sub

để khi chọn vùng xong thả chuột ra thì userform xuất hiện ngay dưới con trỏ chuột luôn được không anh
giống như click chuột phải chuột ấy
click vào điểm khác thì userform tự đóng đi thì có được không.
 
Upvote 0
"Run "CALENDAR.xlam!Calendar", TextBox1" là chạy từ addin CALENDAR. Nhưng mình đã mở addin đó ra và chép các module, form vô file rồi, form lich có tên là usfCALENDAR

P/s: Trên Sheet thì mình đã chạy Macro CalShow được rồi.
Trên textbox trên Form chưa được, rất mong được sự giúp đỡ của tất cả các anh chị

Bạn ui, viết toàn màu đỏ nhìn kinh quá, vả lại như thế là phạm quy đó nha.

Bạn thử Calendar TextBox1 xem sao.
 
Upvote 0
"Run "CALENDAR.xlam!Calendar", TextBox1" là chạy từ addin CALENDAR. Nhưng mình đã mở addin đó ra và chép các module, form vô file rồi, form lich có tên là usfCALENDAR

P/s: Trên Sheet thì mình đã chạy Macro CalShow được rồi.
Trên textbox trên Form chưa được, rất mong được sự giúp đỡ của tất cả các anh chị
Rất mong nhận được sự giúp đỡ của các anh chị. Trân trọng
 
Upvote 0
Thế bài #31 không phải đã trả lời rồi sao? Cần gì phải Run nữa?
Cảm ơn anh, thật sự thì lúc nãy em kiểm tra thì không thấy anh trả lới ở bài #31 nên .....
Còn việc chữ màu đỏ là do em vô tình em trả lời ở bài trước đó có đoạn màu đỏ, khi gõ thêm những câu hỏi mới thì chữ cũng màu đỏ luôn mà chỉnh chỉnh màu Font lại) chứ không cố ý. Mong anh thông cảm
Để em thử Calendar TextBox1.
Trân trọng
 
Upvote 0
Bạn ui, viết toàn màu đỏ nhìn kinh quá, vả lại như thế là phạm quy đó nha.

Bạn thử Calendar TextBox1 xem sao.

Calendar TextBox1 thì đã hiện Form lịch lên rồi anh ơi, nhưng cho em em sao mà khi click chuột ra khỏi Textbox đó thì Form lịch không thoát mà nó bắt buột phải click chọn 1 ngay nào đó rồi mới thoát được ạ

Trân trọng!
 
Upvote 0
Calendar TextBox1 thì đã hiện Form lịch lên rồi anh ơi, nhưng cho em em sao mà khi click chuột ra khỏi Textbox đó thì Form lịch không thoát mà nó bắt buột phải click chọn 1 ngay nào đó rồi mới thoát được ạ

Trân trọng!
Chức năng này bạn chỉ có thể sử dụng trên sheet, trên form bạn bấm nút thoát hoặc tổ hợp phím Alt+Q.
 
Upvote 0
Vọc thử mà được ta? Ngộ vậy ta!}}}}}

Chào anh

Trước đây anh có làm giúp em đoạn code tính ngày tháng trên Form với MS Calendar, nay em muốn thay thế MS Calendar bằng Form lịch của anh nhưng không được

Em thêm đoạn code này vào để gọi Form lịch trên Textbox mà không được

[GPECODE=vb]
Private Sub TxtBatdau_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Calendar TxtBatdau
End Sub
Private Sub TxtKetthuc_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Calendar TxtKetthuc
End Sub
[/GPECODE]

File đính kèm http://www.mediafire.com/view/nv29p1b5r3zyoo1/VR2015-DUY.xlsm

Nay nhờ anh xem và giúp em, trân trọng cảm ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Chào anh

Trước đây anh có làm giúp em đoạn code tính ngày tháng trên Form với MS Calendar, nay em muốn thay thế MS Calendar bằng Form lịch của anh nhưng không được

Em thêm đoạn code này vào để gọi Form lịch trên Textbox mà không được

[GPECODE=vb]
Private Sub TxtBatdau_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Calendar TxtBatdau
End Sub
Private Sub TxtKetthuc_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Calendar TxtKetthuc
End Sub
[/GPECODE]

File đính kèm http://www.mediafire.com/view/nv29p1b5r3zyoo1/VR2015-DUY.xlsm

Nay nhờ anh xem và giúp em, trân trọng cảm ơn
Tôi nghĩ bạn cần dùng là sự kiện MouseDown chứ nhỉ? Sao lại dùng MouseMove trong trường hợp này?
 
Upvote 0
Web KT

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

Back
Top Bottom