1. Chèn một đối tượng Calendar lên sheet, đối tượng này có tên mặc định là Calendar1Nhờ các bác giúp em với ah.
Em muốn tạo ô khi click vào ô thì có bảng ngày tháng sổ ra và để chọn. Em gửi file đính kèm. Có bác nào biêt chỉ giùm em với. Em dùng excel 2007
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column <> 3 Or Target.Row < 5 Or Target.Count > 1 Then
Calendar1.Visible = False
Else
With Calendar1
.Left = Target.Left
.Top = Target.Top
.Visible = True
End With
End If
End Sub
Private Sub Calendar1_Click()
ActiveCell = Calendar1
ActiveCell.NumberFormat = "dd/MM/yyyy"
Calendar1.Visible = False
End Sub
Theo mình thì dùng sự kiện BeforeDoubleClick sẽ hay hơn1. Chèn một đối tượng Calendar lên sheet, đối tượng này có tên mặc định là Calendar1
2. Click chuột phải vào nhãn sheet (chỗ có chữ Sheet1), chọn View code và dán các đoạn code sau vào:
- Code cho sheet để hiện/ẩn Calendar:
- Code cho Calendar1 để gán giá trị lên ô hiện hành:PHP:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column <> 3 Or Target.Row < 5 Or Target.Count > 1 Then Calendar1.Visible = False Else With Calendar1 .Left = Target.Left .Top = Target.Top .Visible = True End With End If End Sub
Trong file đính kèm, bạn chọn 1 ô bất kỳ trong vùng C5:C..., Calendar sẽ xuất hiện để chọn ngày (nhớ Enable Macro đấy nhé).PHP:Private Sub Calendar1_Click() ActiveCell = Calendar1 ActiveCell.NumberFormat = "dd/MM/yyyy" Calendar1.Visible = False End Sub
Em thì thích dùng cái DTPicker hơn Thầy à, khi nào cần thì click vào chọn thôi.Theo mình thì dùng sự kiện BeforeDoubleClick sẽ hay hơn
Đôi lúc người ta chọn vào ô nhưng không phải muốn nhập ngày tháng (thể thể chỉ xem hoặc muốn copy sang nơi khác chẳng hạn)... Khi ấy cái thằng Calendar nó cứ hiện lên rất khó chịu
Cũng chỉ ý kiến thế thôi chứ nói chung còn tùy người dùng cảm thấy thế nào khi xài nữa
Tôi để ý thấy rằng: Cứ cài Office 2010 vào là tự nhiên có cái Calendar, còn DTPicker phải cài riêng mới dùng đượcEm thì thích dùng cái DTPicker hơn Thầy à, khi nào cần thì click vào chọn thôi.
Nói chung thì cái nào không có ta phải tự cài... Tìm trên GPE, cũng khá nhiều bài viết về chủ đề nàyEm cám ơn các bác, cho em hỏi hơi ngu tý vì em mới học cái này
Em tìm ở trong Tools/Additional control không có Calendar thì làm thế nào ạ????
Em cảm ơn bác...
Các Macro có trong file là các macro chỉ dùng trong đối tượng Sheet1 (có từ khóa Private ở đầu) nên sẽ không hiện tên khi bạn nhấn Alt+F8.ác bác có nhầm không nhỉ!
Sao em copy về làm hoài không được! Cứ bắt tạo Marco mới không ah.. E xài Office 2003!
Các bác xem tại đây nhé: http://i1327.photobucket.com/albums/u668/Petertha5/excel_zpsbe09a905.png
Không rõ cái bên trái, bên phải của bạn nghĩa là gì nhưng nói chung muốn điều chỉnh vị trí của Calendar thì bạn chỉ cần sửa 2 câu lệnh sau cho phù hợp là được:các bạn cho mình hỏi tí. Mình đang dung code này khung lịch hiện ra bên trái ,bây giờ mình muốn nó hiện ra bên phải thì phải sửa chỗ nào or thêm dòng code nào nữa ko.
Private Sub Calendar1_Click()
With ActiveCell
.Value = Calendar1
.NumberFormat = "dd/mm/yy"
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Calendar1
If Not Intersect(Range("E7:E1000"), Target) Is Nothing Then
Calendar1.Value = Date
.Visible = True
.Top = Target.Top
.Left = Target(, 2).Left
ElseIf Application.CutCopyMode = False Then
.Visible = False
End If
End With
End Sub
.Top = Target.Top
.Left = Target(, 2).Left
Không rõ cái bên trái, bên phải của bạn nghĩa là gì nhưng nói chung muốn điều chỉnh vị trí của Calendar thì bạn chỉ cần sửa 2 câu lệnh sau cho phù hợp là được:
PHP:.Top = Target.Top .Left = Target(, 2).Left
Ay za, làm gì có thuộc tính Right mà dùng chứ.bạn xem file đính kèm rồi edit dùm mình với , mình đã chỉnh thành right = Target(, 2).right nhưng vẫn ko đc.
Thạnk nhiều.
Bạn thử File...............................Hi anh chị và các bạn!
Mình đang cần viết code tạo lịch để dể lựa chọn trong excel. Trong file excel mình đính kèm có tạo sẵn các vị trí để chọn lịch (D13, H13 & H14).
Mong anh chị và các bạn giải quyết giùm mình vấn đế này.
Chúc anh chị và các bạn làm việc vui vẻ!
Vũ Hưng.
Bạn thêm câu lệnh Calendar1.Visible = False vào cuối Sub Calendar1_Click() là được.Hi bạn!
Mình muốn cell sau khi chọn ngày thì nó tự động đóng lại thì phải thêm code như thế nào?
Thanks!
Vũ Hưng
Nếu bạn muốn lưu kết quả dưới dạng Text thì thay Sub Calendar1_Click() bởi sub này:Hi bạn!
Trường hợp mình muốn sau khi chọn ngày xong, mình muốn có thêm các dòng chữ trước các cell D13, H13 & H14 như bên dưới thì làm thế nào?
Ví dụ ở cell D13 mình chọn ngày 05/10/2013 và cho kết quả là: Ngày xử lý: 05/10/2013
ở cell H13 mình chọn ngày 01/10/2013 và cho kết quả là: Ngày nhận: 01/10/2013
ở cell H14 mình chọn ngày 04/10/2013 và cho kết quả là: Ngày trả: 04/10/2013.
Cảm ơn bạn nhiều!
Vũ Hưng.