Tạo ô nhập ngày tháng trong Excel

Liên hệ QC

the_light

Thành viên mới
Tham gia
17/11/07
Bài viết
5
Được thích
0
Nhờ 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
 

File đính kèm

  • 111.xlsx
    23.3 KB · Đọc: 531
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.
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é):
[GPECODE=vb]Private Sub Calendar1_Click()
Dim S As String
If ActiveCell.Address = "$D$13" Then
S = "Ngày x" & ChrW(7917) & " lý: "
ElseIf ActiveCell.Address = "$H$13" Then
S = "Ngày nh" & ChrW(7853) & "n: "
Else
S = "Ngày tr" & ChrW(7843) & ": "
End If
ActiveCell.Value = S & Format(Calendar1, "dd/MM/yyyy")
Calendar1.Visible = False
End Sub[/GPECODE]
 
Upvote 0
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é.
 

File đính kèm

  • Book2.xls
    33 KB · Đọc: 39
Upvote 0
Tạo lịch trong bảng tính!

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é.

Bạn xem file bên dưới nhé!
 

File đính kèm

  • Book2.xlsm
    23 KB · Đọc: 159
Upvote 0
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
 
Lần chỉnh sửa cuối:
Upvote 0
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

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)
 
Upvote 0
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)
e xài file gốc tác giả thứ thầy ah, để e tìm rối kèm.
 
Upvote 0
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é.
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.
 
Upvote 0
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:
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
- Code cho Calendar1 để gán giá trị lên ô hiện hành:
PHP:
Private Sub Calendar1_Click()
    ActiveCell = Calendar1
    ActiveCell.NumberFormat = "dd/MM/yyyy"
    Calendar1.Visible = False
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é).
Em dùng file ở bài số 2 mà nó hiện vậy là sao ạ?
http://screencast.com/t/8MZ92TihQc
 
Upvote 0
Upvote 0
Đào mộ chút, cho em hỏi cái bước 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 làm như thế nào ạ
 
Upvote 0
Tôi copy file trong #2 của bạn Nghiaphuc nhưng có vấn đề
Chỉ chạy trên sheet1 của bạn
Khi copy code sang sheet2 thì báo lỗi '424'
Tôi dùng excel2007 portable của Tung hacker
Mong ACE chỉ giúp
 
Upvote 0
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
 
Upvote 0
Anh Hoàng Nghĩa Phúc ơi, cho em hỏi? Anh ơi có thể làm thế nào để khi mình chỉ bấm vào cột mà mình gắn cái calendar thì nó mới hiện lên cái bảng để mình chọn ngày tháng được không? Vì cái calendar này rất hay nhưng em thấy dở 1 cái là: Giả sử mình gắn cho calendar là cột B chẳng hạn. Khi bấm vào cột B thì sẽ hiện lên bảng để mình chọn ngày tháng ------> điều này thì OK. Nhưng giờ không bấm vào cột B mà mình bấm vào dòng bất kỳ ví dụ như dòng 1, 2,...5... khi bấm chuột vào dòng đó thì nó quét cả qua cột B nên cái bảng calendar nó lại hiện lên -----> E thấy điều này hơi bất tiện trong khi làm việc. Và 1 điều nữa là nếu sử dụng 1 click để hiện calendar thì lắm lúc bất tiện vì lúc nào nó cũng hiện lên và copy, cut, chèn dòng hình như cũng không làm được vì nó cứ bị đơ hay sao ấy(ví dụ: E bấm copy 1 dòng hoặc 2, 3 dòng gì đấy nhưng khi e bấm chuột phải để paste thì cái ô paste không bấm được), e k biết gì nên em không hiểu. sử dụng 2 click để hiện thì e thấy cũng vậy. E chuyển thành rightclick thì rất tiện nhưng cái chuột phải của em thì không làm được gì nữa. E viết hơi dài dòng, nhưng đó là những thắc mắc của em. Anh có thể xử lý giúp e được không ạ? E cảm ơn anh nhiều. Chúc anh sức khoẻ và thành công ạ.
 
Upvote 0
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:
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
- Code cho Calendar1 để gán giá trị lên ô hiện hành:
PHP:
Private Sub Calendar1_Click()
    ActiveCell = Calendar1
    ActiveCell.NumberFormat = "dd/MM/yyyy"
    Calendar1.Visible = False
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é).
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ác
 
Upvote 0
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
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
 
Upvote 0
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
Đâ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
 
Upvote 0
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
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ử.
 
Upvote 0

File đính kèm

  • DTPicker_Example.xlsm
    18.6 KB · Đọc: 39
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom