PDA

View Full Version : Tạo một thanh sổ xuống trong 1 ô excel



haisonghinh
21-01-09, 08:07 AM
Xin chào các bạn!
Trong quá trình làm việc tôi gặp phải một vấn đề rất khó khăn như thế này
Tôi tạo một mẫu giấy rút tiền, chuyển khoản và hoạch toán kế toán trong excel cho thuận tiện trong việc tính toán nhưng gặp phải một vấn đề rất khó khăn là
ví dụ cái mẫu của tôi có 5 cột
nội dung chương Loại khoản Mục-tiểu mục
4 cột phía trước thì tôi có thể nhớ và điền vào được nhưng cột số 5 (mục-tiểu mục) quá nhiều không tài nào nhớ nổi
Tôi muốn khi nhập tới cột số 5 trong ô đó nó dấu một danh sách mục tiêu -mục để tôi có thể lựa chọn.
Để có thể chọn được ô mục tiểu mục thì danh sách phải có cả mã số và nội dung để biết chọn nhưng khi đã chọn rồi thì chỉ thể hiện mã số trong ô đó thôi để in ra
ví dụ trong danh sách thể hiện: 7001 - mua sắm hàn hóa chuyên môn
7002- chi nghiệp vụ chuyên môn
.....
nhưng khi chọn, ví dụ chọn 7001 - mua sắm hàng hóa chuyên môn thì trong ô đó chỉ thể hiện là 7001 để tôi in ra theo mẫu quy định.
danh sách đó em có thể nhập ngay trong sheet đó hay trong một tập tin khác
Mong các bạn, các bật siêu nhân giúp em với, em xin cảo ơn và hậu tạ

cop_kh
21-01-09, 08:19 AM
Xin chào các bạn!
Trong quá trình làm việc tôi gặp phải một vấn đề rất khó khăn như thế này
Tôi tạo một mẫu giấy rút tiền, chuyển khoản và hoạch toán kế toán trong excel cho thuận tiện trong việc tính toán nhưng gặp phải một vấn đề rất khó khăn là
ví dụ cái mẫu của tôi có 5 cột
nội dung chương Loại khoản Mục-tiểu mục
4 cột phía trước thì tôi có thể nhớ và điền vào được nhưng cột số 5 (mục-tiểu mục) quá nhiều không tài nào nhớ nổi
Tôi muốn khi nhập tới cột số 5 trong ô đó nó dấu một danh sách mục tiêu -mục để tôi có thể lựa chọn.
Để có thể chọn được ô mục tiểu mục thì danh sách phải có cả mã số và nội dung để biết chọn nhưng khi đã chọn rồi thì chỉ thể hiện mã số trong ô đó thôi để in ra
ví dụ trong danh sách thể hiện: 7001 - mua sắm hàn hóa chuyên môn
7002- chi nghiệp vụ chuyên môn
.....
nhưng khi chọn, ví dụ chọn 7001 - mua sắm hàng hóa chuyên môn thì trong ô đó chỉ thể hiện là 7001 để tôi in ra theo mẫu quy định.
danh sách đó em có thể nhập ngay trong sheet đó hay trong một tập tin khác
Mong các bạn, các bật siêu nhân giúp em với, em xin cảo ơn và hậu tạ

Cái này dùng VBA, bạn tham khảo cái này của anh em trên GPE nhé.

cadafi
21-01-09, 08:24 AM
Xin chào các bạn!
Trong quá trình làm việc tôi gặp phải một vấn đề rất khó khăn như thế này
Tôi tạo một mẫu giấy rút tiền, chuyển khoản và hoạch toán kế toán trong excel cho thuận tiện trong việc tính toán nhưng gặp phải một vấn đề rất khó khăn là
ví dụ cái mẫu của tôi có 5 cột
nội dung|chương|Loại|khoản|Mục-tiểu mục

Tôi muốn khi nhập tới cột số 5 trong ô đó nó dấu một danh sách mục tiêu -mục để tôi có thể lựa chọn.
Để có thể chọn được ô mục tiểu mục thì danh sách phải có cả mã số và nội dung để biết chọn nhưng khi đã chọn rồi thì chỉ thể hiện mã số trong ô đó thôi để in ra
ví dụ trong danh sách thể hiện: 7001 - mua sắm hàn hóa chuyên môn
7002- chi nghiệp vụ chuyên môn
.....
nhưng khi chọn, ví dụ chọn 7001 - mua sắm hàng hóa chuyên môn thì trong ô đó chỉ thể hiện là 7001 để tôi in ra theo mẫu quy định.
danh sách đó em có thể nhập ngay trong sheet đó hay trong một tập tin khác


Bạn xem file đính kèm, Danh sách Mục-Khoản mục bạn khai báo bên sheet2 và excel sẽ tự cập nhập.

haisonghinh
21-01-09, 09:26 AM
Rất cảm ơn bạn ca_dafi
Bạn ảnh bạn vừa đẹp lại vừa cho tôi ví dụ đúng như ý tôi mong muốn
Nhưng mong bạn chỉ rõ giùm tôi cách định dạng cái ô Mục-tiểu mục ở sheet 1 để nó có dữ liệu trong sheet 2
rất mong bạn giúp đỡ
Khi nào rảnh mời bạn vào Phú Yên chơi hoặc có dịp tôi sẽ cảm ơn bạn nhiều hơn

ngoctan_q
21-01-09, 11:41 AM
Bạn xem file đính kèm, Danh sách Mục-Khoản mục bạn khai báo bên sheet2 và excel sẽ tự cập nhập.
gIẢ Sử mình cũng có bảng tính như vậy, nhưng có thêm mục B. Lúc này mình muốn có lệnh tìm kiếm mục B thì ngay lập tức trong bảng sẽ chỉ đến mục B. lúc này mới chọn những mã có mục B ở trước vd: B001.

cadafi
21-01-09, 12:14 PM
..........Nhưng mong bạn chỉ rõ giùm tôi cách định dạng cái ô Mục-tiểu mục ở sheet 1 để nó có dữ liệu trong sheet 2

Bạn cần tạo 1 Name động để lấy danh sách [Mục-Khoản mục] từ sheet2, cách làm như sau:

1. Từ sheet2, bạn vào Insert/Name/Define:

http://i280.photobucket.com/albums/kk163/ca_dafi/Pic1-3.jpg

-----------------------------------------------------------------------------------------------------------------------

2. Đặt 1 Name động (dùng Offset) như hình đính kèm:

http://i280.photobucket.com/albums/kk163/ca_dafi/Pic2-3.jpg

-----------------------------------------------------------------------------------------------------------------------

3. Chọn sheet1, click chuột phải lên thanh Menu chọn Control Toolbox:

http://i280.photobucket.com/albums/kk163/ca_dafi/Pic3-3.jpg

-----------------------------------------------------------------------------------------------------------------------
4. Click chọn chế độ Design Mode trên thanh Control Toolbox, (xem hình)
http://i280.photobucket.com/albums/kk163/ca_dafi/Pic4-3.jpg

-----------------------------------------------------------------------------------------------------------------------

5. Tạo một combobox trên sheet hiện hành, như sau:

http://i280.photobucket.com/albums/kk163/ca_dafi/pic6-3.jpg http://i280.photobucket.com/albums/kk163/ca_dafi/pic7-1.jpg

-----------------------------------------------------------------------------------------------------------------------

6. Click chuột phải lên combobox và chọn Properties
http://i280.photobucket.com/albums/kk163/ca_dafi/Pic5-3.jpg

-----------------------------------------------------------------------------------------------------------------------
7. Tìm đến thuộc tính ListFillRange, gõ tên của Name động vừa đặt vào đây.

http://i280.photobucket.com/albums/kk163/ca_dafi/Pic6-2.jpg

-----------------------------------------------------------------------------------------------------------------------

8. Viết code điều khiển cho combobox hiện ra đúng vị trí ô mình cần chọn (cột E), bằng cách vào Tool/Macro/Visual basic Editor (hoặc ấn Atl+F11)

http://i280.photobucket.com/albums/kk163/ca_dafi/pic8-3.jpg

Click vào sheet1 trong cửa sổ VBAProject bên phải, xử lý sự kiện Worksheet SelectionChange bằng đoạn code sau:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [E2:E65536]) Is Nothing Then
Me.cboMuc.Visible = True
Me.cboMuc.LinkedCell = ActiveCell.Address
Me.cboMuc.Height = ActiveCell.Height
Me.cboMuc.Left = ActiveCell.Left
Me.cboMuc.Width = ActiveCell.Width
Me.cboMuc.Top = ActiveCell.Top
Else
Me.cboMuc.Visible = False
Exit Sub
End If
End Sub


http://i280.photobucket.com/albums/kk163/ca_dafi/pic9.jpg

Đóng cửa sổ VBA lại, tắt chế độ design Mode đi và tự thưởng thức nha.

Chúc bạn thành công!

cadafi
21-01-09, 12:20 PM
gIẢ Sử mình cũng có bảng tính như vậy, nhưng có thêm mục B. Lúc này mình muốn có lệnh tìm kiếm mục B thì ngay lập tức trong bảng sẽ chỉ đến mục B. lúc này mới chọn những mã có mục B ở trước vd: B001.
Bên sheet 2, bạn không cần tách ra hai mục A, B riêng như thế, cứ việc nhập chung hai danh sách làm 1 và sort theo mã. Nghĩa là bạn hãy bỏ đi hai dòng ghi "Mục A" và "Mục B" đi.

Khi click chuột vào combobox bên cột E của sheet1, bạn gõ vào chữ "B", excel sẽ tự động cho con trỏ nhảy đến mã đầu tiên bắt đầu bằng chữ "B".

ngoctan_q
21-01-09, 12:31 PM
Bên sheet 2, bạn không cần tách ra hai mục A, B riêng như thế, cứ việc nhập chung hai danh sách làm 1 và sort theo mã. Nghĩa là bạn hãy bỏ đi hai dòng ghi "Mục A" và "Mục B" đi.

Khi click chuột vào combobox bên cột E của sheet1, bạn gõ vào chữ "B", excel sẽ tự động cho con trỏ nhảy đến mã đầu tiên bắt đầu bằng chữ "B".
Nhưng giả sử bảng tính của mình có tách ra như vậy và một chuỗi danh sách rất dài, được chia thành từng phần như vậy. Cám ơn bạn đã góp ý! Mong bạn tiếp tục góp ý!

cadafi
21-01-09, 12:34 PM
Nhưng giả sử bảng tính của mình có tách ra như vậy và một chuỗi danh sách rất dài, được chia thành từng phần như vậy. Cám ơn bạn đã góp ý! Mong bạn tiếp tục góp ý!
Thì vẫn trên nguyên tắc này:

Khi click chuột vào combobox bên cột E của sheet1, bạn gõ vào chữ "B", excel sẽ tự động cho con trỏ nhảy đến mã đầu tiên bắt đầu bằng chữ "B".Nghĩa là bạn chỉ cần nhớ và gõ kí tự đầu của mã là đủ rồi.

ngoctan_q
21-01-09, 12:38 PM
Thì vẫn trên nguyên tắc này:
Nghĩa là bạn chỉ cần nhớ và gõ kí tự đầu của mã là đủ rồi.
Ko thể đánh được tiếng việt trong Bảng chọn hả bạn!

cadafi
21-01-09, 12:49 PM
Ko thể đánh được tiếng việt trong Bảng chọn hả bạn!
Tại sao lại không được!? Tuy nhiên, về kinh nghiệm đặt mã, không ai đặt mã mà có dấu cả!

ngoctan_q
21-01-09, 01:17 PM
Tại sao lại không được!? Tuy nhiên, về kinh nghiệm đặt mã, không ai đặt mã mà có dấu cả!
Mục B của mình thêm vào nhiều sao chỉ xuất hiện mục B thôi!

cadafi
21-01-09, 01:27 PM
Mục B của mình thêm vào nhiều sao chỉ xuất hiện mục B thôi!
Thực sự mình không hiểu bạn muốn gì nữa!? Bạn tổng hợp lại và nói lên yêu cầu hoặc thắc mắc của bạn 1 lần được không?

Topic này để giải quyết vấn đề:


Tạo một thanh sổ xuống trong 1 ô excel:
Ví dụ chọn 7001 - mua sắm hàng hóa chuyên môn thì trong ô đó chỉ thể hiện là 7001 để tôi in ra theo mẫu quy định.
danh sách đó em có thể nhập ngay trong sheet đó hay trong một tập tin khácVà tôi nghĩ bạn haisonghinh đã nắm được cách thực hiện.

ngoctan_q
21-01-09, 01:35 PM
Thực sự mình không hiểu bạn muốn gì nữa!? Bạn tổng hợp lại và nói lên yêu cầu hoặc thắc mắc của bạn 1 lần được không?

Topic này để giải quyết vấn đề:
Và tôi nghĩ bạn haisonghinh đã nắm được cách thực hiện.
ý mình là có cách nào tìm kiếm từng mục trong bảng khi ta chỉ đánh 1 vài chữ trong bảng, còn file text1 mình có thêm vào mục B và B001... sao chỉ xuất hiện mục B thôi!

Po_Pikachu
21-01-09, 02:27 PM
Bạn nhấn vào Design mode thì nút Design mode sẽ sáng lên. Vậy thì tiếp tục thực hiện bước 5 đi.
Vậy thôi!
Thân.

cadafi
21-01-09, 02:52 PM
Thì ra là bạn chưa tạo combobox luôn! **~**
Mình đã bổ sung luôn phần hướng dẫn tạo combobox và xử lý điều khiển combobox tại bài #6 rồi đấy, bạn xem lại hướng dẫn tại bài #6 (http://www.giaiphapexcel.com/forum/showpost.php?p=132548&postcount=6) nhé

volga
21-01-09, 03:10 PM
Nhờ anh xem hộ cái này làm sai gì mà nó không ra anh ca_dafi ơi :''"

cadafi
21-01-09, 03:21 PM
Nhờ anh xem hộ cái này làm sai gì mà nó không ra anh ca_dafi ơi :''"

Cái combobox của bạn là lấy từ Form, mình đang hướng dẫn combobox lấy từ Control Toolbox. Bạn xem hướng dẫn lại tại bài #6 nhé! Bước 5,6,7,8 ấy!

haisonghinh
22-01-09, 08:38 AM
Xin chào Ca_dafi
Rất cảm ơn bạn
tôi đã làm được bước đầu rồi
nhưng tôi vẫn không hiểu phải có thêm bước 8 (bước tạo cái macro) để làm gì
Mình không tạo macro (vì phức tạp quá) nhưng nó vẫn cho ra cái thanh xổ đó
NHưng cong một cái mữa là sao trong bảng mình gõ có dòng chủ là in đậm để dễ nhìn nhưng trong thanh sổ nó không in đậm
có cách nào khắc phục tình trạng này không
Các bạn rất hay
đúng không thầy đố mầy làm nên
Rất cảm ơn bạn
Chúc năm mới thành công

yeudoi
22-01-09, 09:03 AM
Xin chào Ca_dafi
Rất cảm ơn bạn
tôi đã làm được bước đầu rồi
nhưng tôi vẫn không hiểu phải có thêm bước 8 (bước tạo cái macro) để làm gì
Mình không tạo macro (vì phức tạp quá) nhưng nó vẫn cho ra cái thanh xổ đó
NHưng cong một cái mữa là sao trong bảng mình gõ có dòng chủ là in đậm để dễ nhìn nhưng trong thanh sổ nó không in đậm
có cách nào khắc phục tình trạng này không
Các bạn rất hay
đúng không thầy đố mầy làm nên
Rất cảm ơn bạn
Chúc năm mới thành công

Nếu bạn không muốn tạo macro thì vào combobox trong listfỉllange bạn đặt tên cho nó, còn muốn chỉnh in đậm thì vào font chỉnh mầu đậm ( chú ý tất cả là chỉnh trong combobox nha)

haisonghinh
22-01-09, 09:06 AM
nhưng đã chỉnh thì nó in đậm hết cho tất cả danh sách đó chớ không nào mình muốn in đậm thì in đậm còn dòng nào muons không in đậm thì không in đậm

cadafi
22-01-09, 09:07 AM
........nhưng tôi vẫn không hiểu phải có thêm bước 8 (bước tạo cái macro) để làm gì
Mình không tạo macro (vì phức tạp quá) nhưng nó vẫn cho ra cái thanh xổ đó

Nếu không có đoạn code (macro) đó, thì cái combobox bạn tạo ra nó sẽ "đứng im" một chỗ cho dù bạn đã chuyển con trỏ xuống dòng dưới trong cùng cột E. Bạn thử xem.


Nhưng cong một cái mữa là sao trong bảng mình gõ có dòng chủ là in đậm để dễ nhìn nhưng trong thanh sổ nó không in đậm
có cách nào khắc phục tình trạng này khôngĐịnh dạng Font và Format Font trong combobox không liên quan gì đến Format Font của sheet.

Muốn có chữ in đậm trong Combobox, làm như sau:
- Click chuột phải vào combobox (dĩ nhiên là phải bật chế độ Design Mode lên) chọn Properties.
- Tìm đến thuộc tính Font và tùy chỉnh loại font chữ, in đậm, in nghiêng, cỡ chữ tùy thích.
- Tìm đến thuộc tính ForeColor để tùy chỉnh màu sắc cho chữ trong combobox.

Chúc bạn thành công.

haisonghinh
22-01-09, 09:18 AM
KHÔNG PHẢI THẾ CA_DAFI ƠI
Tôi đã chỉnh thử rồi
Ý tôi muốn là trong danh sách đó có cái chủ và các nhánh của nó
Tôi muốn in đậm cái chủ thôi
Ví dụ trong danh sách mục 7000, tôi có 15 cái con là 7001, 7002, 7003, ... 7015
Tôi muốn In đậm cái mẹ là 7000 để dễ nhìn thôi
Nếu chỉnh theo cách bạn tôi đã chỉnh thử nhưng nó in đậm cho cả danh sách luôn không có dòng in đậm và dòng không in đậm

cadafi
22-01-09, 09:20 AM
Ý tôi muốn là trong danh sách đó có cái chủ và các nhánh của nó
Tôi muốn in đậm cái chủ thôi
Ví dụ trong danh sách mục 7000, tôi có 15 cái con là 7001, 7002, 7003, ... 7015
Tôi muốn In đậm cái mẹ là 7000 để dễ nhìn thôi
Nếu chỉnh theo cách bạn tôi đã chỉnh thử nhưng nó in đậm cho cả danh sách luôn không có dòng in đậm và dòng không in đậm

Bạn không thể làm được việc đó với combobox. Combobox không hỗ trợ định dạng riêng cho các record ngang hàng trong cùng 1 list.

le tin
22-01-09, 01:53 PM
gIẢ Sử mình cũng có bảng tính như vậy, nhưng có thêm mục B. Lúc này mình muốn có lệnh tìm kiếm mục B thì ngay lập tức trong bảng sẽ chỉ đến mục B. lúc này mới chọn những mã có mục B ở trước vd: B001.
Ý bạn có phải thế này không

ngoctan_q
22-01-09, 02:20 PM
Ý bạn có phải thế này không
cám ơn bạn nhiều! Nhưng khi ta chọn Mục B sao ko thấy các mục dưới gồm B001, B002, ....

le tin
22-01-09, 08:07 PM
Tôi nghĩ là mục đích tìm mã số bắt đầu bằng B , nên đánh chữ B sẽ có kết quả là B001,...
Như bạn Ca_dafi góp ý ở bài #7
Nguyên tắt là nếu đánh các chữ bắt đầu , VD: AB nó sẽ có kết quả AB1,AB2,AB... ,...
Nếu bạn muốn có luôn chữ Mục B thì thử cái này ( vẫn đánh 1 chữ B thôi)

haisonghinh
06-02-09, 02:19 PM
Rất cảm ơn các bạn, tôi đã làm được rồi, hay quá
Bây giờ tôi muốn trong 1 sheet có tới 4 cột có chứa các thanh sổ xuống mà mà tự động chạy từ dòng đầu tiên xuống tới dòng 2656 (dòng cuối) thì đoạn code viết làm sao
(trên chỉ chỉ cho tôi cách viết 1 ô)
Ví vụ tôi có 3 dòng muốn tạo ra các thanh sổ xuống từ A2, B2, C2 đến ô A2656, B2656, C2656
Xin cảm ơn

haisonghinh
10-02-09, 10:11 AM
có thể trong đoạn code đó viết 3 đoạn trên 1 cái macro đó được không, mỗi đoạn chỉ thay đổi số liệu ô có thanh sổ xuống thôi
Tôi gửi kèm theo file này mong các bạn chỉ giúp cách viết đoạn code trong sheet 1 có đến 3 thanh sổ xuống
Xin chân thành cảm ơn

cadafi
13-02-09, 07:49 AM
có thể trong đoạn code đó viết 3 đoạn trên 1 cái macro đó được không, mỗi đoạn chỉ thay đổi số liệu ô có thanh sổ xuống thôi
Tôi gửi kèm theo file này mong các bạn chỉ giúp cách viết đoạn code trong sheet 1 có đến 3 thanh sổ xuống
Xin chân thành cảm ơn

Có phải ý của bạn như thế này không? Vẫn xử lý sự kiện Worksheet_SelectionChange, bạn sử dụng cú pháp:


If ............. Then
.............
Else If ............. Then
.............
End If


Đây là đoạn code để xử lý 3 combobox của bạn:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
If Not Intersect(Target, [B4:B65536]) Is Nothing Then
ComboBox2.Visible = False
ComboBox3.Visible = False
With ComboBox1
.Visible = True
.LinkedCell = ActiveCell.Address
.Height = ActiveCell.Height
.Left = ActiveCell.Left
.Width = ActiveCell.Width
.Top = ActiveCell.Top
End With
'---------------------------------------------------------
ElseIf Not Intersect(Target, [D4:D65536]) Is Nothing Then
ComboBox1.Visible = False
ComboBox3.Visible = False
With ComboBox2
.Visible = True
.LinkedCell = ActiveCell.Address
.Height = ActiveCell.Height
.Left = ActiveCell.Left
.Width = ActiveCell.Width
.Top = ActiveCell.Top
End With
'---------------------------------------------------------
ElseIf Not Intersect(Target, [E4:E65536]) Is Nothing Then
ComboBox1.Visible = False
ComboBox2.Visible = False
With ComboBox3
.Visible = True
.LinkedCell = ActiveCell.Address
.Height = ActiveCell.Height
.Left = ActiveCell.Left
.Width = ActiveCell.Width
.Top = ActiveCell.Top
End With
'---------------------------------------------------------
Else
ComboBox1.Visible = False
ComboBox2.Visible = False
ComboBox3.Visible = False
End If
Application.ScreenUpdating = True
End Sub

phuongc5
15-04-09, 05:18 PM
Anh ca_dafi ơi, lại vấn đề tạo combox làm list xổ xuống ấy mà, em thấy anh làm rất hay, nhưng chỉ là trên 1 cột, bây giờ trên nhiều cột thì thế nào, hoangdanh282vn có làm tại đây http://www.giaiphapexcel.com/forum/showthread.php?p=149898#post149898 nhưng sao em áp dụng ở file của em thì không được, toàn báo lỗi như hình sau (hình 1). Anh có code nào thật tổng quát, ví dụ ở sheet1 em làm ở 5 cột, sheet2 cũng thế, mỗi cột có ListFillrange khác nhau thì làm thế nào. Anh giúp em với!

hoangdanh282vn
15-04-09, 05:33 PM
Anh ca_dafi ơi, lại vấn đề tạo combox làm list xổ xuống ấy mà, em thấy anh làm rất hay, nhưng chỉ là trên 1 cột, bây giờ trên nhiều cột thì thế nào, hoangdanh282vn có làm tại đây http://www.giaiphapexcel.com/forum/showthread.php?p=149898#post149898 nhưng sao em áp dụng ở file của em thì không được, toàn báo lỗi như hình sau (hình 1). Anh có code nào thật tổng quát, ví dụ ở sheet1 em làm ở 5 cột, sheet2 cũng thế, mỗi cột có ListFillrange khác nhau thì làm thế nào. Anh giúp em với!

Nếu khi áp dụng, thấy lỗi sao bạn không gửi file lên ngay ở topic đó để mọi người dễ theo dõi và trả lời.
Lỗi của bạn có thể do bạn thêm mới một Combobox và trong code lại không khai báo combobox này nên báo lỗi. bạn gửi file lên nha.

phuongc5
16-04-09, 09:53 AM
Uh, do mình không có thời gian thực tập ngay, tối hôm qua thử nghiệm thì thấy không được, mình gửi file lên hoangdanh282vn giúp mình với nhé! (Mình dân kế toán nên không am hiểu về excel lắm, thấy code hay nên mình copy về ứng dụng công việc thôi chứ mình không biết về VBA)

hoangdieu123
19-05-10, 07:03 AM
Các bác ơi, nghĩ cách cứu em với. Em là dân văn chương nên không rành về excel đâu. Sắp tới Đại hội Đảng bộ, em được phân công nhiệm vụ là thư kí, trong đó có việc nhập danh sách đề cử, ứng cử và làm phiếu bầu cử ngay tại Đại hội luôn. Danh sách đề cử, ứng cử có thể rất dài, tầm khoảng trên 20 người mà không lẽ lại ngồi gõ tay tại ĐH, trông nó ko Pro tí nào vả lại có thể gõ không kịp. Vì vậy em muốn tạo trước một danh sách sổ xuống ở hai cột A (úng cử) và B (đề cử) nhưng không biết làm thế nào. Tham khảo mấy bài của các bác em thấy hay và đúng yêu cầu của mình lắm nhưng chịu không biết làm. Các bác bày giúp em với. Đa tạ các bác.

Thanh1102
02-06-10, 04:38 PM
Bạn có thể gửi file ds và yêu cầu cụ thể lên.mọi người sẽ giúp bạn

BlankMan
23-07-10, 03:33 PM
Tôi có file dữ liệu sau, tôi muốn tạo các combo box: Vùng miền, Nhóm và Tỉnh. Khi chọn vùng miền nó sẽ cộng theo vùng và ghi sang sheet report: cột Đơn vị ghi tên mỗi nhóm thuộc Vùng vào 1 dòng, các tháng thì sum từ bảng dữ liệu theo nhóm thuộc vùng, tương tự khi chọn Nhóm sẽ ra các tỉnh thuộc nhóm. Khi chọn tỉnh thì nó sẽ ra dữ liệu của tỉnh đó.
Các bạn có thể chỉ sơ qua cho tôi cách lập trình trong VBA để điều khiển các Combo box đó được không? Tôi thì suy nghĩ rằng khi chọn Vùng miền bắc chẳng hạn, nó sẽ select các nhóm và tỉnh thuộc miền bắc ra, tuy nhiên tôi không rõ lệnh select đó trong VBA như thế nào.
Xin cảm ơn rất nhiều!

the kien
23-10-12, 08:55 AM
cadafi oi. neu lam tren excel 2007 thi lam nhu nao. toi khong lam duoc tren 2007. lam on giup nhe

luckynhan
23-10-12, 09:31 AM
Các bạn cho mình hỏi tại sao mình tao llist bằng combobox như các bạn chỉ mà trong thanh sổ xuống của mình chỉ có vài danh sách thế??? mình làm mãi nó cũng như thế mong các bạn giúp đỡ.

the kien
24-10-12, 11:35 AM
cadafi oi, toi muon keo dai so luong cua dmuc them thi nhu nao vay

hungsalsa
08-01-13, 10:12 AM
Bạn cần tạo 1 Name động để lấy danh sách [Mục-Khoản mục] từ sheet2, cách làm như sau:

1. Từ sheet2, bạn vào Insert/Name/Define:

http://i280.photobucket.com/albums/kk163/ca_dafi/Pic1-3.jpg

-----------------------------------------------------------------------------------------------------------------------

2. Đặt 1 Name động (dùng Offset) như hình đính kèm:

http://i280.photobucket.com/albums/kk163/ca_dafi/Pic2-3.jpg

-----------------------------------------------------------------------------------------------------------------------

3. Chọn sheet1, click chuột phải lên thanh Menu chọn Control Toolbox:

http://i280.photobucket.com/albums/kk163/ca_dafi/Pic3-3.jpg

-----------------------------------------------------------------------------------------------------------------------
4. Click chọn chế độ Design Mode trên thanh Control Toolbox, (xem hình)
http://i280.photobucket.com/albums/kk163/ca_dafi/Pic4-3.jpg

-----------------------------------------------------------------------------------------------------------------------

5. Tạo một combobox trên sheet hiện hành, như sau:

http://i280.photobucket.com/albums/kk163/ca_dafi/pic6-3.jpg http://i280.photobucket.com/albums/kk163/ca_dafi/pic7-1.jpg

-----------------------------------------------------------------------------------------------------------------------

6. Click chuột phải lên combobox và chọn Properties
http://i280.photobucket.com/albums/kk163/ca_dafi/Pic5-3.jpg

-----------------------------------------------------------------------------------------------------------------------
7. Tìm đến thuộc tính ListFillRange, gõ tên của Name động vừa đặt vào đây.

http://i280.photobucket.com/albums/kk163/ca_dafi/Pic6-2.jpg

-----------------------------------------------------------------------------------------------------------------------

8. Viết code điều khiển cho combobox hiện ra đúng vị trí ô mình cần chọn (cột E), bằng cách vào Tool/Macro/Visual basic Editor (hoặc ấn Atl+F11)

http://i280.photobucket.com/albums/kk163/ca_dafi/pic8-3.jpg

Click vào sheet1 trong cửa sổ VBAProject bên phải, xử lý sự kiện Worksheet SelectionChange bằng đoạn code sau:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [E2:E65536]) Is Nothing Then
Me.cboMuc.Visible = True
Me.cboMuc.LinkedCell = ActiveCell.Address
Me.cboMuc.Height = ActiveCell.Height
Me.cboMuc.Left = ActiveCell.Left
Me.cboMuc.Width = ActiveCell.Width
Me.cboMuc.Top = ActiveCell.Top
Else
Me.cboMuc.Visible = False
Exit Sub
End If
End Sub


http://i280.photobucket.com/albums/kk163/ca_dafi/pic9.jpg

Đóng cửa sổ VBA lại, tắt chế độ design Mode đi và tự thưởng thức nha.

Chúc bạn thành công!
Bác cadafi ơi, sao em làm như của bác sao ko đc . Nó toàn báo lỗi thôi
http://img688.imageshack.us/img688/7159/24716731.png (http://imageshack.us/photo/my-images/688/24716731.png/)

Bác nào có thời gian xem qua hộ em với nhé. Em cảm ơn trước nhé
File của em đây, em ko up đc lên diễn đàn em up lên mediafire
http://www.mediafire.com/file/g733h1xu4gk4ksp/thulam.xls

umaiaijo
07-09-13, 03:08 AM
anh cadifi ơi cho em hỏi chút ạ. em tạo nút combobox đó xong và hiển thị danh sách bình thường nhưng vì danh sách quá dài và tìm theo tên thì gõ chữ cái đầu ví dụ N001 N002 N003....N100,e muốn hỏi là có cách nào khi danh sách đó hiện ra từ combobox đó mà mình đặt chuột ở trong đó và lăn bi để cho nó cuộn danh sách xuống được không a,khi e lăn bi trong danh sách đó thì thanh cuộn của sheets excel lại cuộn ạ.mong a chỉ giúp

matbiec222
28-08-14, 05:35 PM
Bạn cần tạo 1 Name động để lấy danh sách [Mục-Khoản mục] từ sheet2, cách làm như sau:

1. Từ sheet2, bạn vào Insert/Name/Define:

http://i280.photobucket.com/albums/kk163/ca_dafi/Pic1-3.jpg

-----------------------------------------------------------------------------------------------------------------------

2. Đặt 1 Name động (dùng Offset) như hình đính kèm:

http://i280.photobucket.com/albums/kk163/ca_dafi/Pic2-3.jpg

-----------------------------------------------------------------------------------------------------------------------

3. Chọn sheet1, click chuột phải lên thanh Menu chọn Control Toolbox:

http://i280.photobucket.com/albums/kk163/ca_dafi/Pic3-3.jpg

-----------------------------------------------------------------------------------------------------------------------
4. Click chọn chế độ Design Mode trên thanh Control Toolbox, (xem hình)
http://i280.photobucket.com/albums/kk163/ca_dafi/Pic4-3.jpg

-----------------------------------------------------------------------------------------------------------------------

5. Tạo một combobox trên sheet hiện hành, như sau:

http://i280.photobucket.com/albums/kk163/ca_dafi/pic6-3.jpg http://i280.photobucket.com/albums/kk163/ca_dafi/pic7-1.jpg

-----------------------------------------------------------------------------------------------------------------------

6. Click chuột phải lên combobox và chọn Properties
http://i280.photobucket.com/albums/kk163/ca_dafi/Pic5-3.jpg

-----------------------------------------------------------------------------------------------------------------------
7. Tìm đến thuộc tính ListFillRange, gõ tên của Name động vừa đặt vào đây.

http://i280.photobucket.com/albums/kk163/ca_dafi/Pic6-2.jpg

-----------------------------------------------------------------------------------------------------------------------

8. Viết code điều khiển cho combobox hiện ra đúng vị trí ô mình cần chọn (cột E), bằng cách vào Tool/Macro/Visual basic Editor (hoặc ấn Atl+F11)

http://i280.photobucket.com/albums/kk163/ca_dafi/pic8-3.jpg

Click vào sheet1 trong cửa sổ VBAProject bên phải, xử lý sự kiện Worksheet SelectionChange bằng đoạn code sau:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [E2:E65536]) Is Nothing Then
Me.cboMuc.Visible = True
Me.cboMuc.LinkedCell = ActiveCell.Address
Me.cboMuc.Height = ActiveCell.Height
Me.cboMuc.Left = ActiveCell.Left
Me.cboMuc.Width = ActiveCell.Width
Me.cboMuc.Top = ActiveCell.Top
Else
Me.cboMuc.Visible = False
Exit Sub
End If
End Sub


http://i280.photobucket.com/albums/kk163/ca_dafi/pic9.jpg

Đóng cửa sổ VBA lại, tắt chế độ design Mode đi và tự thưởng thức nha.

Chúc bạn thành công!

Chào Bác CADAFI, em đang cần làm đến List Box nên search được bài hướng dẫn này của bác. Em đã làm theo và thành công, cám ơn bác.

Tuy nhiên em cần làm được nhiều hơn 1 List Box trên cùng một sheet mà khi dùng code của bác nó báo lỗi (khai báo biến as Range). Bác có thể giúp em hoặc hướng dẫn hộ em được không ạ.
Bác vui lòng xem file đính kèm hộ em nhé.

Cám ơn bác nhiều!

thanhpt204
12-09-14, 01:10 PM
Ôi. Các bác dùng Office 2003, em dùng 2007 chẳng biết cách tạo Combobox ở đâu nữa. Em gửi file, bác nào làm hộ em với ah.
Em cần chọn số phiếu trên 2 sheet phiếu xuất và Phiếu nhập.
File này em download trên mạng về chỉnh sửa mà chưa hoàn chỉnh. Bác nào biết giúp em nốt cái phần sổ kho với ah, làm thế nào để khi chọn mã hàng nó sẽ tự động nhảy hết tất cả các số phiếu xuất nhập phát sinh của mã hàng đó ah