Làm sao để nối 2 ComboBox với nhau?

Liên hệ QC

thanhtam348

Thành viên thường trực
Tham gia
9/3/07
Bài viết
288
Được thích
62
Xin hỏi các bạn; tôi có ComboBox1 định dạng là tháng "mm" và ComboBox2 định dạng là năm "yyyy" nhưng tôi dùng "&" để nối 2 ComboBox nạp vào Sheet cho ra dạng "mm/yyyy" nhưng khi nạp vào thì nó hiển thị không đúng, xin các bạn chỉ dùm. Cám ơn.
 
Xin hỏi các bạn; tôi có ComboBox1 định dạng là tháng "mm" và ComboBox2 định dạng là năm "yyyy" nhưng tôi dùng "&" để nối 2 ComboBox nạp vào Sheet cho ra dạng "mm/yyyy" nhưng khi nạp vào thì nó hiển thị không đúng, xin các bạn chỉ dùm. Cám ơn.
Không đúng như thế nào?, bạn đưa file lên cho mọi người xem để có giải pháp cho bạn
 
Upvote 0
DV đây! nhờ bạn giúp dùm:
Theo sự kiện Private Sub UserForm_Initialize() thì các Item của Combobox1, Combobox2 bạn add vào là các "01", "02".. là dữ liệu text. Khi nối lại thày ngày tháng định mạng mm/yyyy. Vậy mình hỏi bạn ngày xuất ra là ngày mấy? hay mặc định ngày 1, nếu vậy thì chấp nhận kiểu này Sheet1.Range("B" & i).Value = ComboBox1 & "/" & ComboBox2?
 
Lần chỉnh sửa cuối:
Upvote 0
Mã:
Private Sub CommandButton1_Click()
    Dim i As Long
    i = Sheet1.Range("B65000").End(xlUp).Row + 1
    If Me.ComboBox1.Value <> "" Then
        Sheet1.Range("B" & i).Value = [COLOR=#ff0000]ComboBox1 & ComboBox2[/COLOR]
        [COLOR=#ff0000]Me.ComboBox1.Value = ActiveCell.Value[/COLOR]
    Else
        [COLOR=#ff0000]????[/COLOR]    
    End If
End Sub

1. ComboBox1 & ComboBox2 = "03" & "2012" = "032012" = 32012 = 23/08/1987

Nghĩa là thiếu dấu "/"

2. Me.ComboBox1.Value = ActiveCell.Value

ActiveCell không phải là ô vừa gán giá trị mà là 1 ô hoặc 1 range vớ vẩn nào đó đang chọn.
 
Upvote 0
Xin hỏi các bạn; tôi có ComboBox1 định dạng là tháng "mm" và ComboBox2 định dạng là năm "yyyy" nhưng tôi dùng "&" để nối 2 ComboBox nạp vào Sheet cho ra dạng "mm/yyyy" nhưng khi nạp vào thì nó hiển thị không đúng, xin các bạn chỉ dùm. Cám ơn.
Ngày tháng người ta dùng Calendar, ai lại dụng kiểu kỳ cục thé chứ
 
Upvote 0
2. Me.ComboBox1.Value = ActiveCell.Value
ActiveCell không phải là ô vừa gán giá trị mà là 1 ô hoặc 1 range vớ vẩn nào đó đang chọn.
Cám ơn Anh ptm412.
Thủ tục đó dùng cho ListBox, khi copy ra file giả lập Chắc buồn ngủ nên bị quáng.
Ngày tháng người ta dùng Calendar, ai lại dụng kiểu kỳ cục thé chứ
Cám ơn Anh ndu.
Trong Form nầy mình muốn làm vậy, bởi nếu dùng Calendar thì khi cần di chuyển đến các tháng nhọc nhằn hơn cho mình.
 
Upvote 0
Trong Form nầy mình muốn làm vậy, bởi nếu dùng Calendar thì khi cần di chuyển đến các tháng nhọc nhằn hơn cho mình.
Bạn nói sao chứ!
Đằng nào bạn cũng phải bấm ComboBox để chọn tháng, đúng không? Thế thì trên Canlendar cũng có ComboBox chọn tháng ý chang vậy thôi
Nên nhớ rằng: Dùng công cụ phải đúng chức năng của nó! ComboBox do bạn tự tạo đều là dạng chuổi, mai này muốn "ráp" chúng lại với nhau để thành ngày tháng đâu có đơn giản như vậy... Bạn phải xét xem Control Panel của bạn đang định dạng kiểu gì, nếu không là sai toàn bộ
Ngoài ra thì DATE chuẩn phải có đủ ngày, tháng, năm... Lý nào chỉ ghép tháng và năm lại có thể ra ngày tháng?
Tóm lại: Bạn đang dùng công cụ sai mục đích <===> Cố ý làm sai nguyên tắc, gây hậu quả nghiêm trọng!
Ẹc... Ẹc...
 
Lần chỉnh sửa cuối:
Upvote 0
Anh ndu ơi...cám ơn anh góp ý - biết góp ý không sai, nói thật về sau không biết hậu quả sẽ thể hiện sao nhưng trên thực tế thì DL nầy em chỉ để xem - và xem theo tháng, vì vậy Calendar chuẩn cho N/T/N ai cũng hiểu, nhưng việc mình không quan trọng nên thấy nếu phải dùng Calendar thì khi di chuyển đến các tháng khác liên tục thấy thao tác sẽ nhiều hơn. Lần nửa - cám ơn anh nha!

PS: À xin hỏi anh thêm: Nếu sau nầy mình có thay đổi trong Control Panel thì anh có cách nào để thay cho dấu cách "/" "-" của tháng & năm không ?
 
Lần chỉnh sửa cuối:
Upvote 0
Anh ndu ơi...cám ơn anh góp ý - biết góp ý không sai, nói thật về sau không biết hậu quả sẽ thể hiện sao nhưng trên thực tế thì DL nầy em chỉ để xem - và xem theo tháng, vì vậy Calendar chuẩn cho N/T/N ai cũng hiểu, nhưng việc mình không quan trọng nên thấy nếu phải dùng Calendar thì khi di chuyển đến các tháng khác liên tục thấy thao tác sẽ nhiều hơn. Lần nửa - cám ơn anh nha!

PS: À xin hỏi anh thêm: Nếu sau nầy mình có thay đổi trong Control Panel thì anh có cách nào để thay cho dấu cách "/" "-" của tháng & năm không ?

Dùng Calendar sẽ tốt hơn dùng 2 ComboBox để nối chuỗi.

Định dạng trong Control Panel, xin nhìn hình:
 

File đính kèm

  • Picture1.jpg
    Picture1.jpg
    44.3 KB · Đọc: 42
Upvote 0
Dùng câu lệnh này:

Sheet1.Range("B" & i).Value = ComboBox1 & "/" & ComboBox2

Cũng có nguy cơ sai:
1. Nếu cell định dạng ngày tháng sẵn:
Nếu ngày hệ thống là dd/mm/yyyy thì Excel tự gán ngày 1 vào thành ra 01/03/2012
Nếu ngày hệ thống là mm/dd/yyyy thì Excel không hiểu và sinh ra tùm lum chuyện

2. Nếu cell chưa định dạng, ta có nguy cơ nhận toàn giá trị text.


Cách tốt hơn cả là:

Sheet1.Range("B" & i).Value = DateSerial(ComboBox2, ComboBox1, 1)

Lúc đó dù cho ngày hệ thống là dd/mm hay mm/yy, là dd-mm hay dd.mm thì vẫn chính xác.




 
Upvote 0
nhưng việc mình không quan trọng nên thấy nếu phải dùng Calendar thì khi di chuyển đến các tháng khác liên tục thấy thao tác sẽ nhiều hơn.
Nếu đã vậy thì thôi xài 12 cái OptionButton chỉ thị 12 tháng... Check bụp bụp vào cho nó lẹ
Ẹc... Ẹc...
 
Upvote 0
Web KT

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

Back
Top Bottom