Tại sao ComboBox lại ko liên kết dc với Name động?

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,905
Tôi gữi file này nhờ các bạn nghiên cứu dùm...
Trong này có 1 Name động tên là VERSION... Đối với Validation thì nó nhận name này bình thường, cụ thể là cột H trong file... Thế nhưng khi tôi gán name VERSION này vào ComboBox thì tại sao lại ko dc nhỉ?
Nếu như tôi cố tình muốn gán Name này thì phải làm thế nào đây?
Mong các cao thủ chỉ giáo!
ANH TUẤN
 

File đính kèm

  • Offset_Tuan.rar
    9.4 KB · Đọc: 62
Và đây nữa... Tôi tạm thời làm dc cái vụ name động như trên vừa hỏi... thế nhưng file này lại báo lỗi thật vô lý... Trong file dùng 1 đoạn code rất bình thường... tôi thật sự ko hiểu tại sao lỗi lại xuất hiện.. Nó đóng luôn Excel.. Tôi đã thử trên nhiều máy tính khác nhau, vẫn lỗi...
Các bạn xem file và góp ý nhé!
ANH TUẤN
 

File đính kèm

  • Filebaoloi.rar
    22 KB · Đọc: 37
anhtuan1066 đã viết:
Và đây nữa... Tôi tạm thời làm dc cái vụ name động như trên vừa hỏi... thế nhưng file này lại báo lỗi thật vô lý... Trong file dùng 1 đoạn code rất bình thường... tôi thật sự ko hiểu tại sao lỗi lại xuất hiện.. Nó đóng luôn Excel.. Tôi đã thử trên nhiều máy tính khác nhau, vẫn lỗi...
Các bạn xem file và góp ý nhé!
ANH TUẤN

lỗi khi bác chọn value trong combo2 phải không ạ? tại vì trong đó bác offset lùi về 3 cột so với activecell, nên nếu bác đứng ở cột a,b,c thì khi chọn xong giá trị, nó lùi về 3 cột không được nên sẽ báo lỗi.
 
Đâu có đâu... tôi giải thích thêm nhé:
ComboBox2 (là cái nằm bên phải) dùng đễ chọn NHÓM và gán dử liệu vào cột D, sau khi gán xong thì lùi 3 cột, 0 dòng sang cột A, vậy là đúng rồi.. Còn ComboBox1 (cái nằm bên trái) dùng đễ gán dử liệu vào cột A
Ở đây nó lỗi khi chọn ComboBox1 cơ... ko hiểu nữa... Soibien xem lại giúp... lỗi nghiêm trọng, thoát Excel luôn!
ANH TUẤN
 
anhtuan1066 đã viết:
Tôi gữi file này nhờ các bạn nghiên cứu dùm...
Trong này có 1 Name động tên là VERSION... Đối với Validation thì nó nhận name này bình thường, cụ thể là cột H trong file... Thế nhưng khi tôi gán name VERSION này vào ComboBox thì tại sao lại ko dc nhỉ?
Nếu như tôi cố tình muốn gán Name này thì phải làm thế nào đây?
Mong các cao thủ chỉ giáo!
ANH TUẤN

Theo ý em thì thế này, lỗi bắt đầu từ name Start, ở đây bác dùng địa chỉ tương đối trong name (ý của bác là tuỳ theo cell đang đứng sẽ lấy được OS tương ứng) nhưng khi ta đang soạn thảo combo, excel hiểu ta đang đứng ở dòng 1 (vì con trỏ đang đứng tại combo mà) do đó, Start trả về giá trị ở dòng 1 (tức là string "OS"), khi bác dùng hàm Match với tham số 0, sẽ không tìm được giá trị tương ứng, ----> Name không tham chiếu được ----> combobox không nhận name đó.

Nếu giải quyết = cách bỏ tuỳ chọn 0 đi thì ta sẽ đặt được lisstfillrange của combo là "Version" nhưng tham chiếu cũng cố định tới cột "Linux" ---> em nghĩ mình phải đổi cách khác bác ơi.
 
Này nhé... code trong ComboBox1 là:
Private Sub ComboBox1_Change()
ActiveCell.Value = ComboBox1
ActiveCell.Offset(1,0).Select
End Sub
Nếu tôi sửa lại thành
Private Sub ComboBox1_Change()
ActiveCell.Value = ComboBox1
End Sub
thì sẽ ko còn báo lỗi nũa... Tại sao ???
Còn 1 lỗi kỳ lạ nữa là... Khi chọn ComboBox2 đễ gán dử liệu vào NHÓM cột D, tiếp tục chọn ComboBox1 đễ gán vào MA cột A... bây giờ nếu quay lại chọn ComboBox2 đễ gán nhóm thì nó ra kết quả tầm bậy... Thật quái dị...
Cái này nếu dùng Validation thì chẳng có vấn đề gì cả nhưng tôi sợ rằng sẽ tăng dung lượng file ko cần thiết nên mới chuyễn sang dùng ComboBox
vậy Soibien có cách nào cải tiến file này ko? Cái file thứ 2 ấy... Giúp với!
ANH TUẤN
 
anhtuan1066 đã viết:
Đâu có đâu... tôi giải thích thêm nhé:
ComboBox2 (là cái nằm bên phải) dùng đễ chọn NHÓM và gán dử liệu vào cột D, sau khi gán xong thì lùi 3 cột, 0 dòng sang cột A, vậy là đúng rồi.. Còn ComboBox1 (cái nằm bên trái) dùng đễ gán dử liệu vào cột A
Ở đây nó lỗi khi chọn ComboBox1 cơ... ko hiểu nữa... Soibien xem lại giúp... lỗi nghiêm trọng, thoát Excel luôn!
ANH TUẤN

Bác viết ý tưởng làm cái combo1 của bác được không ạ, em xem mà vẫn chưa hỉu. ???!!!
 
bác dùng code này nhé, hết báo lỗi
Mã:
[COLOR=darkblue]Private[/COLOR] [COLOR=darkblue]Sub[/COLOR] ComboBox1_Change()
Application.Calculation = xlCalculationManual
ActiveCell.Value = ComboBox1
ActiveCell.Offset(1, 0).Select
Application.Calculation = xlCalculationAutomatic
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]Sub[/COLOR]
 
Lúc đầu tôi sẽ chọn 1 cell nào đó đang trống tại cột D làm ActiveCell.. khi tôi chọn ComboBox NHOM thì nó gán dử liệu vào cột D.. ví dụ tôi chọn nhóm DAO thì chử DAO này dc gắn vào activecell...
Bây giờ cái ComboBox thứ 2 phải lấy dc danh sách MA tương ứng với nhóm DAO (DAO01, DAO02... ) là danh sách động ấy mà...
Name NHOM nằm ở sheet 2 ấy! I2:I11... và sheet 2 này chứa 1 danh sách cố định... Sheet 1 dùng làm nhập liệu
Giờ tôi gữi lại 1 file làm bằng Validation nhé! Chứ ý 2 Validation này trong cột A và D
Yêu cầu: Nếu tôi ko muốn dùng Validation nữa mà muốn thay nó bằng ComboBox có chức năng tương tự thì làm thế nào?
Lưu ý: Cột D dc chọn trước, danh sách trong cột A sẽ "động" tùy theo nhóm dc chọn!
Bạn xem file gốc sẽ dể hiểu hơn!
ANH TUẤN
 

File đính kèm

  • Filebaoloi_1.rar
    17.6 KB · Đọc: 34
SoiBien đã viết:
bác dùng code này nhé, hết báo lỗi
Chính xác rồi... 1 cái code giãi quyết 1 lần mấy lỗi 1 lúc luôn... ha.. ha.. Có lý
Hay nhỉ... cho Calculate manual trước, sau đó Auto thì ổn... Tuyệt lắm
---------------------------------------------------------
Tuy nhiên bạn xem lại giùm... tôi đang chơi trò "tà đạo" ngay cột U, V, W... tuy giãi quyết dc vấn đề "động" trong ComboBox nhưng vấn thấy nó kỳ kỳ thế nào ấy... Nếu như ai đó vô tình xóa đi những cột phụ này thì bảng tính "vở" ngay lập tức... Soibien có ý kiến gì cải tiến thêm ko? Nếu như chỉ dùng Name mà ko cần dùng nhưng cột phụ này thì hay hơn...
ANH TUẤN
 
Lần chỉnh sửa cuối:
Xin lỗi, mình diễn đạt hơi kém nên dùng cách này:
Bạn đang ở cell D136 chẳng hạn, bạn ấn vào Combo 2, chọn 1 cái trong list thì ActiveCell là A136, ấn vào Combo 1, chọn 1 cái trong list thì ko bị lỗi và ActiveCell là A138. Nếu bạn ấn vào Combo 1 chọn 1 giá trị trong list thì sẽ báo lỗi. Nếu bạn đưa ActiveCell đến D137 và ấn vào Combo 2 và tiếp tục làm tương tự thì ko bị lỗi. Lỗi là ở chỗ khi ActiveCell là A138 (D138 = "") thì vùng W1:X34 sẽ bỏ trống, Listfillrange chưa update được nên khi chọn 1 giá trị trong list của combo 1 sẽ ko phù hợp với Listfillrange của Combo 1 và máy báo lỗi.
Cách khắc phục:
 
Lần chỉnh sửa cuối:
anhtuan1066 đã viết:
ý kiến gì cải tiến thêm ko? Nếu như chỉ dùng Name mà ko cần dùng nhưng cột phụ này thì hay hơn...

Lỡ xài code rồi bác ơi! Code luôn cho nó đơn giản hen, hì hì!
 
SoiBien đã viết:
Lỡ xài code rồi bác ơi! Code luôn cho nó đơn giản hen, hì hì!
OK, đồng ý với Soibien... nhưng nếu lở làm code thì Soibien giãi quyết luôn mấy yêu cầu sau:
1> ComboBox 2 luôn luôn gắn dử liệu vào cột D cho dù ta đang chọn ActiveCell ở đâu.. cứ lựa 1 cell trong cột D mà nó cho là gần nhất.. tất nhiên nếu ActiveCell nằm ngay cột D thì phải gán vào ngay cell ấy rồi...
2> Tương tự thế, ComboBox 1 luôn gán dử liệu vào cột A... và phải là list động... Chọn list xong vẫn có thể sữa lại dc... Như trừong hợp vừa rồi thì chọn xong ko thể sữa dc nữa
3> Làm cách nào cho ComboBox "trôi" theo cell (giống như chức năng Freeze Panes vậy).... Theo tôi biết thì ko làm dc vụ này... Có thể nhãy tới cell gần với ActiveCell cũng dc, ko cần "trôi"
4> Nhờ bạn khi làm file chuyển giùm tôi dử liệu cột D thành cột A, cột A thành cột B, cột B thành cột C... vân.. vân... Đại khái là NHÓM rồi đên MÃ, TÊN, MA - TÊN và cuối cùng là ĐVT... Và nếu thay đổi như thế thì ComboBox bện trái là NHÓM, gán vào cột A, ComboBox bên phải là MÃ, gán vào cột B (Nói rắc rồi thế ko biết Soibien hiểu ko?)
Cám ơn trước... vì mấy trò như thế là quá tầm tay tôi rồi... ko thể tự làm nỗi.. hi.. hi.. Soibien giúp nhé
ANH TUẤN
 
OK anh, em sẽ làm.

nhưng nhân tiện em sẽ làm cái combo Ma theo Name động thử một cái để bác xem, nếu bác thích thì làm tiếp luôn, tuy nhiên sẽ có một số ràng buộc. Để lát nữa em post file lên bác cho ý kiến nha.

Bác xem file nhé, dzui lắm. hì hì.
 

File đính kèm

  • Filebaoloi_new2 16-Oct-07 6-43.Rar
    22 KB · Đọc: 27
Lần chỉnh sửa cuối:
Tôi vừa thử xong file.. OK nhưng mà hình như nó hơi chậm đấy, soibien xem lại giải thuật là ở điểm nào đã hạn chế tốc độ tính toán?
Nói chung yêu cầu vẫn như tôi nói ở trên
ANH TUẤN
 
Quá chậm anh SoiBien ơi, như thế khó ứng dụng được. Cần phải cải thiện tốc độ.

LM
 
Bác xem thử nhé, có gì thì em sửa tiếp.
còn cái này thì em nghĩ không cần thiết, để Freeze pane cũng được mà
anhtuan1066 đã viết:
:
3> Làm cách nào cho ComboBox "trôi" theo cell (giống như chức năng Freeze Panes vậy).... Theo tôi biết thì ko làm dc vụ này... Có thể nhãy tới cell gần với ActiveCell cũng dc, ko cần "trôi"

xin xem file ở bài sau
 
Lần chỉnh sửa cuối:
Rất hay... nhưng chỉ hơi tiếc 1 điều là phải mất công bấm Update... Mỗi ngày nhập vài khoảng vài trăm dòng e rằng bấm thêm nút này cũng hơi oải đấy! Hi... hi...
Ah... còn nữa... Lở phát hiện ra nhập sai muốn quay lại sửa thì làm sao đây? Trong file này tôi thấy nếu muốn sửa thì phải xóa cell NHÓM trước... Nên chăng ActiveCell nằm ở đâu thì sửa tại đó luôn!
ANH TUẤN
 
Lần chỉnh sửa cuối:
anhtuan1066 đã viết:
nhưng chỉ hơi tiếc 1 điều là phải mất công bấm Update...

Nếu không bấm update thì lỡ chọn sai cái Mã thì nó cũng update dữ liệu vào, và không nhập được 2 cái giống nhau liên tiếp.

anhtuan1066 đã viết:
Ah... còn nữa... Lở phát hiện ra nhập sai muốn quay lại sửa thì làm sao đây? Trong file này tôi thấy nếu muốn sửa thì phải xóa cell NHÓM trước... Nên chăng ActiveCell nằm ở đâu thì sửa tại đó luôn!
ANH TUẤN

Đây là mình làm trực tiếp trên Sheet, đâu phải trên form, nếu chỉ lấy activecell thì bắt buộc bác khi nhập mới thì activecell phải nằm ở một dòng trống, không thì nó cũng ghi đè lên cái cũ. Còn không thì phải thêm một Checkbox báo cho nó biết là mình muốn "Sửa" bác ạ.
 
Nếu không bấm update thì lỡ chọn sai cái Mã thì nó cũng update dữ liệu vào, và không nhập được 2 cái giống nhau liên tiếp.
Nhập giống nhau dc Quốc Anh à... Nếu ko thì cần chi cái form này nữa chứ... Lấy danh sách chuẩn bên kia cho rồi... Bây giờ mình nhập là như thế, nếu file thành công thì người ta còn thêm mấy cột vào nữa, chẳng hạn ngày tháng, số lượng gì gì đó... Trùng ko sao cả... mà chắc chắn là phải có trùng rồi... (VD: ngày trước mua món đồ đó, ngày hôm sau lại mua y món đồ ấy nữa...)
Nói chung cứ nhập vào thẳng ActiveCell, nhập xong thì dịch xuống 1 dòng.. mặc kệ ActiveCell nằm ở đâu.. ghi đè cũng dc... Quan trong nhất là làm sao NHÓM thì phải vào NHÓM, MÃ phải ăn với MÃ... Ý nghĩa là như vầy: VD tôi đang ở cell C39, giờ tôi chọn NHÓM thì nó phải vào đúng cell A39, ko dc vào C39... Cũng ở C39 nếu tôi chọn MÃ thì nó phải nhập vào B39... Quốc Anh hiểu ko?
 
Web KT
Back
Top Bottom