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.
Thôi thì cứ coi như đặt kết quả vào ô dạng Text đi (nếu muốn lưu dạng Number thì bạn tùy biến theo cách ở bài trên của tôi nhé):Hi bạn!
Với đoạn code trên thì ba cell mình chọn, đều cho kết quả trước ba cells (D13, H13 & H14) đều có chữ là "Ngày xử lý".
Còn mình muốn ở mỗi cell có dòng text khác nhau mà?
ở 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.
Mình làm tương tự sao vẫn bị báo lỗi:
Run-time error 424
Object required
Dù mình đã vào VBA/Tool/references và chon Microsoft Calendar Control 2007
Hiện mình dùng MS Excel 2007
Bạn nào biết chỉ giúp nhé.
E thử file chạy trên office 2010 thì báo lỗi sau, GPE xem dùm e bị sao.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:
[GPECODE=vb]Private Sub Calendar1_Click()
ActiveCell.Value = "Ngày x" & ChrW(7917) & " lý: " & Format(Calendar1, "dd/MM/yyyy")
Calendar1.Visible = False
End Sub[/GPECODE]
Còn nếu bạn muốn lưu kết quả dưới dạng Number thì thay sub trên bởi sub này:
[GPECODE=vb]Private Sub Calendar1_Click()
Calendar1.Visible = False
With ActiveCell
.Value = Calendar1
.NumberFormat = """Ngày x" & ChrW(7917) & " lý: "" dd/mm/yyyy"
End With
End Sub[/GPECODE]
E thử file chạy trên office 2010 thì báo lỗi sau, GPE xem dùm e bị sao.
View attachment 111004
e xài file gốc tác giả thứ thầy ah, để e tìm rối kèm.Vậy file của bạn đâu?
Đoán:
- Có thể bạn chỉ copy code mà không copy cái Calendar đi theo
- Nếu bạn chạy file gốc của tác giả mà vẫn báo lỗi, có nghĩa là máy bạn chưa cài Calendar Control (file MSCAL.OCX, đã nói rất nhiều trên diễn đàn rồi)
Lại báo lỗi giống bạn này....file gốc chủ thớt mà cũng ko thử được, GPE hướng dẫn làm với.ứng dụng hay.Mình làm tương tự sao vẫn bị báo lỗi:
Run-time error 424
Object required
Dù mình đã vào VBA/Tool/references và chon Microsoft Calendar Control 2007
Hiện mình dùng MS Excel 2007
Bạn nào biết chỉ giúp nhé.
Em dùng file ở bài số 2 mà nó hiện vậy là sao ạ?1. 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
Có lẽ máy bạn đang dùng Excel 2010. Vậy thì bạn tham khảo các topic sau:Em dùng file ở bài số 2 mà nó hiện vậy là sao ạ?
http://screencast.com/t/8MZ92TihQc
tại sao mình không bật chế độ cho chạy macro ta?Hi All! Khi mình viết Macro, khi sang máy khác nếu không cxo1 macro nó sẽ không chạy, có cách nào viết công thức luôn thì hay nhất
Bác Phúc ơi, bây giờ nếu em muốn áp dụng cho nhiều cột (các cột này không liên tiếp) thì sửa code của bác như thế nào ạ? Em cảm ơn bác1. 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
Private Sub Worksheet_SelectionChange(ByVal Target As Range)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 được
-----------------
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ày
Đâu phải copy code là chaỵ được đâu. Phải vẽ cái Calendar nó ra bảng tính nữaPrivate 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
Anh oi cho e hỏi? e coppy doan code vao mà sao bo lỗi 424 k hà. anh có thể chỉ e cụ thể hơn không? cảm ơn anh nhiều
Bạn vẽ Calendar lên sheet rồi click phải vào tên sheet muốn dùng Calendar, chọn View code rồi cho đống trên vào thử.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
Anh oi cho e hỏi? e coppy doan code vao mà sao bo lỗi 424 k hà. anh có thể chỉ e cụ thể hơn không? cảm ơn anh nhiều
Vậy còn cách khác de thực hiện không thầy?Đâu phải copy code là chaỵ được đâu. Phải vẽ cái Calendar nó ra bảng tính nữa
Thêm nữa: bây giờ MS không còn hỗ trợ Calendar nữa, muốn dùng cũng không được
Còn, đó là DTPicker nhưng cũng chỉ dùng được nếu bạn cài Office 32 bit (office 64 bit không dùng được)Vậy còn cách khác de thực hiện không thầy?
vẽ lịch như thế nào vậy amh? có thể chỉ giúp e tùng bước dc không?Bạn vẽ Calendar lên sheet rồi click phải vào tên sheet muốn dùng Calendar, chọn View code rồi cho đống trên vào thử.
Trước đây tôi dùng Excel 2003 thì có thể hướng dẫn được, nay 2016 nó không còn hỗ trợ Calendar nữa, nên hướng dẫn cũng khó quá.
vậy cam on anh nhiu nheTrước đây tôi dùng Excel 2003 thì có thể hướng dẫn được, nay 2016 nó không còn hỗ trợ Calendar nữa, nên hướng dẫn cũng khó quá.