nguyenhongphong
Thành viên hoạt động
- Tham gia
- 12/3/08
- Bài viết
- 126
- Được thích
- 13
Bạn xem trong file có được không nhé!
. Hay quá=DATE($B$1,MATCH($B$2,$C$6:$C$17,0),ROWS($1:1))
Sao không sử dụng Calendar Control cho tiện nhỉ. Thêm một doạn code ngắn để ẩn hiện tùy thích nếu thấy chướng mắt với cái Control đó.Ý e là sử dụng validation như a Tiến hướng dẫn đó a!
Cám ơn anh.
Calendar này còn phải cải tiến thêm nhiều ---> Chức năng Copy/Paste bị "tèo" rồiSao không sử dụng Calendar Control cho tiện nhỉ. Thêm một doạn code ngắn để ẩn hiện tùy thích nếu thấy chướng mắt với cái Control đó.
E vẫn chưa hiểu tại sao hàm match đây +1 và ,1 cuối cùng của hàm offset là hàm sẽ dò cột của tháng: Jan,Feb,Mar,..., ko phải dò vào cột Ngày nữa. Nhưng kết quả của a Tiến lại rất chính xác theo ngày tháng năm.=OFFSET(Sheet1!$B$6,,,DAY(DATE(Sheet1!$B$1,MATCH(Sheet1!$B$2,Sheet1!$C$6:$C$17,0)+1,0)),1)
1/Theo mình hiểu không có ngày 0. Nếu ô đó nhập 0/3/2010 thì nó sẽ trở về ngày 28/2/2009 (Tức trở về ngày cuối tháng trước đó) (Thay vì nhập DATE(Sheet1!$B$1;MATCH(Sheet1!$B$2;Sheet1!$C$6:$C$17;0);28)=28/2/2014Em cũng xin thú thật,
E vẫn chưa hiểu tại sao hàm match đây +1 và ,1 cuối cùng của hàm offset là hàm sẽ dò cột của tháng: Jan,Feb,Mar,..., ko phải dò vào cột Ngày nữa. Nhưng kết quả của a Tiến lại rất chính xác theo ngày tháng năm.
Nhờ A/C hướng dẫn thêm giúp e
Hàm MATCH(Sheet1!$B$2,Sheet1!$C$6:$C$17,0) để xem mấy chữ bạn chọn (JAN, FEB... DEC) tương ứng với số mấy (1, 2.... 12)Em cũng xin thú thật,
E chưa từng đọc và tìm hiểu mấy cái VBA trong excel.
Nên nhìn thấy đoạn code e cũng sợ lắm.
Nếu a đã từng đọc qua link hướng dẫn căn bản về VBA. Xin a Thắng post lên giúp e.
Em xin quay lại bài giải của a Tiến 1 chút, vì e có chỗ còn thắc mắc.
E vẫn chưa hiểu tại sao hàm match đây +1 và ,1 cuối cùng của hàm offset là hàm sẽ dò cột của tháng: Jan,Feb,Mar,..., ko phải dò vào cột Ngày nữa. Nhưng kết quả của a Tiến lại rất chính xác theo ngày tháng năm.=OFFSET(Sheet1!$B$6,,,DAY(DATE(Sheet1!$B$1,MATCH(S heet1!$B$2,Sheet1!$C$6:$C$17,0)+1,0)),1)
Nhờ A/C hướng dẫn thêm giúp e
Khắc phục cái này đâu có gì khó. Vấn đề là một hướng làm khác.Calendar này còn phải cải tiến thêm nhiều ---> Chức năng Copy/Paste bị "tèo" rồi
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
Calendar1.Visible = True
ElseIf Calendar1.Visible = True Then
Calendar1.Visible = False
End If
End Sub
Vâng! Thì đâu có gì khó ---> Bạn thử copy cell A1 paste sang cell khác xemKhắc phục cái này đâu có gì khó. Vấn đề là một hướng làm khác.
PHP:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$1" Then Calendar1.Visible = True ElseIf Calendar1.Visible = True Then Calendar1.Visible = False End If End Sub
Thật sự là chẳng có gì khó cả. Vấn đề là cần tới đâu làm tới đó. Không nên bới móc quá nhiều.Vâng! Thì đâu có gì khó ---> Bạn thử copy cell A1 paste sang cell khác xem
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode = 1 Then Exit Sub
If Target.Address = "$A$1" Then
Calendar1.Visible = True
ElseIf Calendar1.Visible = True Then
Calendar1.Visible = False
End If
End Sub
---Thật sự là chẳng có gì khó cả. Vấn đề là cần tới đâu làm tới đó. Không nên bới móc quá nhiều.
Trời đất ---> Mình đang bàn về kỹ thuật ---> Mà đã gọi là kỹ thuật thì phải liên tục hoàn thiện chứThật sự là chẳng có gì khó cả. Vấn đề là cần tới đâu làm tới đó. Không nên bới móc quá nhiều.
PHP:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.CutCopyMode = 1 Then Exit Sub If Target.Address = "$A$1" Then Calendar1.Visible = True ElseIf Calendar1.Visible = True Then Calendar1.Visible = False End If End Sub
Tôi chỉ là dân Amateur. Vì vậy, với tôi chỉ cần đáp ứng đủ nhu cầu đặt ra là được, không cần phải quá hoàn thiện.Trời đất ---> Mình đang bàn về kỹ thuật ---> Mà đã gọi là kỹ thuật thì phải liên tục hoàn thiện chứ
Tôi tin chắc khi bạn xây dựng code bạn cũng chưa từng hình dung đến những trục trặc có thể xãy ra (tôi cũng thế thôi)
Không biết bạn thì sao, chứ riêng tôi, được người ta bơi móc là niềm hạnh phúc, vì qua đó tôi có thể hoàn thiện thêm thuận toán của riêng mình
---------------------
Bơi móc tiếp đây:
- Khi đang copy thì Calendar không ẩn khi con trỏ nằm ngoài cell A1
- Chẳng hiểu sao cell A1 lại ở dạng TEXT nhỉ (sao mà tính toán)
Nếu bạn cho rằng CHẲNG CÓ GÌ KHÓ CẢ thì xin mời hoàn thiện tiếp
Ẹc... Ẹc...
---------------------
(Code Selection_Change là món mà tôi cho là khó nhai nhất)
Private Sub Calendar1_AfterUpdate()
[A1].Value = Calendar1.Value
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode = 1 And Calendar1.Visible = True Then
Calendar1.Visible = False
[A1].Copy
End If
If Target.Address = "$A$1" Then
Calendar1.Visible = True
ElseIf Calendar1.Visible = True Then
Calendar1.Visible = False
End If
End Sub
Ai dám bảo bạn là Amateur khi bạn cho rằng bài này KHÔNG CÓ GÌ KHÓTôi chỉ là dân Amateur. Vì vậy, với tôi chỉ cần đáp ứng đủ nhu cầu đặt ra là được, không cần phải quá hoàn thiện.
PHP:Private Sub Calendar1_AfterUpdate() [A1].Value = Calendar1.Value End Sub
PHP:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.CutCopyMode = 1 And Calendar1.Visible = True Then Calendar1.Visible = False [A1].Copy End If If Target.Address = "$A$1" Then Calendar1.Visible = True ElseIf Calendar1.Visible = True Then Calendar1.Visible = False End If End Sub
A1 là cell định dạng ngày tháng và có một Control hỗ trợ nhập liệu rồi. Không lý gì lại cần phải copy dữ liệu từ một Cell khác nữa.Ai dám bảo bạn là Amateur khi bạn cho rằng bài này KHÔNG CÓ GÌ KHÓ
Thế là tương đối hoàn thiện rồi! (Bị hỏng ở chổ không copy chổ khác vào A1 được)
Bạn không thấy rằng nhờ có người bơi móc mà bạn nghiên cứu thêm được sao?
Ẹc... Ẹc...
Mời nghiên cứu tiếp nếu bạn vẫn còn cảm thấy... DỂ
Private Sub Calendar1_AfterUpdate()
[A1].Value = Calendar1.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And Calendar1.Visible = False Then
Calendar1.Visible = True
Calendar1.Value = [A1].Value
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode = 1 And Calendar1.Visible = True Then
Calendar1.Visible = False
[A1].Copy
ElseIf Application.CutCopyMode = 1 And Target.Address = "$A$1" Then
Exit Sub
End If
If Target.Address = "$A$1" Then
Calendar1.Visible = True
ElseIf Calendar1.Visible = True Then
Calendar1.Visible = False
End If
End Sub
Cũng không chắc là không có ai cần đến yêu cầu này đâu (tôi đã từng thấy khi người ta chỉnh sửa dử liệu)Không lý gì lại cần phải copy dữ liệu từ một Cell khác nữa.
Chính xác! Nhưng có phải là ứng dụng càng hoàn hảo thì càng tốt hơn không?có nghiên cứu thì cũng hướng về mục đích cuối cùng là ứng dụng.
Nếu đã copy, sau đó đương nhiên phải paste. Có cần phải hiện Control chăng? Có ai copy để... chẳng làm gì cả ko?- Bây giờ thì copy nơi khác vào A1 được nhưng khi ấy cái Calendar nó không hiện ra (Copy/Paste xong rồi nó mới hiện)
- Copy tại 1 cell khác (chưa paste) rồi chọn vào A1, Calendar nó cũng... cóc hiện luôn
Tôi nghĩ bạn thừa sức biết đó không phải là lỗi của code.- Tệ hơn nữa: Copy 1 cell rổng, Paste vào A1 (làm 1 vài lần) sẽ có 1 thời điểm nào đó mà ta chọn vào Calendar, nó chẳng chịu điền dử liệu vào A1
Tình huống thế này:Nếu đã copy, sau đó đương nhiên phải paste. Có cần phải hiện Control chăng? Có ai copy để... chẳng làm gì cả ko?
Tôi chẳng biết nữa ---> Lổi xuất hiện thì ta phải quy nó là do code gây raTôi nghĩ bạn thừa sức biết đó không phải là lỗi của code.