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

File đính kèm

  • Chon ngay bang Calendar.rar
    15.9 KB · Đọc: 2,272
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é).
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
 
Upvote 0
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
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.
 
Upvote 0
Em 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...
 
Lần chỉnh sửa cuối:
Upvote 0
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.
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
-----------------
Em 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...
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
 
Lần chỉnh sửa cuối:
Upvote 0
á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
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.
Bạn thử chọn một ô trên cột C (từ C5 trở xuống) thử xem có hiện Calendar lên không.
 
Upvote 0
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
 
Upvote 0
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
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
 
Upvote 0
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

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.
 

File đính kèm

  • vi du calendar.xlsm
    22.9 KB · Đọc: 243
Upvote 0
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.
Ay za, làm gì có thuộc tính Right mà dùng chứ.
Bạn sửa lại câu lệnh trên thành thế này là được: .Left = Target.Left - .Width
 
Upvote 0
Tao calendar trong excel!

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.
 

File đính kèm

  • Make calendar in Excel.xlsx
    25.5 KB · Đọc: 135
Upvote 0
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ử File...............................
 

File đính kèm

  • calender.rar
    31.2 KB · Đọc: 537
Upvote 0
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
 
Upvote 0
Upvote 0
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.
 
Upvote 0
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.
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]
 
Upvote 0
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.
 
Upvote 0
Web KT

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

Back
Top Bottom