Tạo bảng chọn dữ liệu trong Excel

  • Thread starter handung107
  • Ngày gửi
levanduyet

levanduyet

Welcome
16/10/04
537
19
18
HCM
my.opera.com
ROSE1976 nói:
Chao Handung107
Minh da xem qua ve ke toan bang Excel cua ban do la ke toan bang Excel NHP. Tuyet lam. Minh rat cam on ban. Nhung ban oi ban co the giup minh duoc khong ?
Ban co the huong dan cho minh cach hop box ve chon in phieu Thu - chi duoc khong ?
Ban lam rat hay, minh thi khong lam duoc, Chi can Click vao o chon la co the chon duoc phieu in.
Neu duoc xin ban danh chut thoi gian mail cho minh nhe.
E-mail cua minh : tuanthanh5291@yahoo.com
To: Rose1976,
Chị Handung107 lớn tuổi hơn bạn nhiều!!!
Lê Văn Duyệt
 
V

vuongmanhcuong

Guest
13/9/04
13
1
3
40
HCMC
chao cac anh,chi Tuấn, Duyệt, Dung

theo dang theo doi topic nay va đã mạn phép kết hợp kiến thức của các anh chị để giúp cho công việc của mình. tuy nhiên em đang vướng ở việc kiểm soát biến giữa Worsheets và Module

(giống ví dụ listbox cua anh Tuấn)
Public TAM As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 4 Then
TAM = ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
If LayDuLieu Then
dm.Show
End If
End If
End Sub


sau khi form DM show, điền vào các mục liên quan, chọn nút XONG, nhưng em không thể truy xuất đến biến TAM :wall:

mong cac anh chi gop y cho

em se gui mail cho anh Tuấn nho anh up len, de cac anh chi gop y dum

chao anh chi
 
T

Tuanktcdcn

Lão già ham vui
18/6/04
549
52
28
46
Hà Nội
www.bluesofts.net
Bạn tạo thêm một Control trên Form DM như là TextBox Name="TAM" và đặt Visible=False Sau đó gọi lệnh thế này:
....
Set Tam=Activecell
DM.TAM.Value=Tam.Value
DM.Show
....
Set Tam=nothing
 
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,032
126
63
49
Hà nội
vnuni.net
levanduyet nói:
To: Rose1976,
Chị Handung107 lớn tuổi hơn bạn nhiều!!!
Lê Văn Duyệt

Thực ra ko biết ko có tội anh Duyệt ạ. Nhất là trên online world!

Thực ra khi em bắt đầu "nói chuyện" với ai trên net. Em đều xưng hô "Bạn", "tớ" mặc dù nhìn nick của người ta biết là SN ... 8x. Sau khi đã quen biết nhiều rồi thì mới hỏi tuổi của nhau và bắt đầu xưng hô theo đúng tuổi tác (nhiều khi biết rồi nhưng đã chót quen gọi bạn bè rồi nên ... vẫn bạn bè). Dĩ nhiên, lớn tuổi hẳn như chị HanDung thì gặp là phải chào chị rồi (Lần trước đọc bài nào đó thấy mọi người gọi là Chị HanDung v.v... thì em mới biết đó là người lớn tuổi hơn em đấy. Và khi gặp anh ở HN em mới biết anh hơn tuổi em :)). Còn ở trên mạng, nếu chưa biết thì vẫn là bạn bè cả thôi anh ạ. Thế mới là thế giới ảo mà.
 
levanduyet

levanduyet

Welcome
16/10/04
537
19
18
HCM
my.opera.com
hai2hai nói:
Thực ra ko biết ko có tội anh Duyệt ạ. Nhất là trên online world!

Thực ra khi em bắt đầu "nói chuyện" với ai trên net. Em đều xưng hô "Bạn", "tớ" mặc dù nhìn nick của người ta biết là SN ... 8x. Sau khi đã quen biết nhiều rồi thì mới hỏi tuổi của nhau và bắt đầu xưng hô theo đúng tuổi tác (nhiều khi biết rồi nhưng đã chót quen gọi bạn bè rồi nên ... vẫn bạn bè). Dĩ nhiên, lớn tuổi hẳn như chị HanDung thì gặp là phải chào chị rồi (Lần trước đọc bài nào đó thấy mọi người gọi là Chị HanDung v.v... thì em mới biết đó là người lớn tuổi hơn em đấy. Và khi gặp anh ở HN em mới biết anh hơn tuổi em :)). Còn ở trên mạng, nếu chưa biết thì vẫn là bạn bè cả thôi anh ạ. Thế mới là thế giới ảo mà.
Chào Hải,
Đâu có gì đâu ! Anh chỉ cho bạn ấy biết để dễ xưng hô thôi !
Thân,
Lê Văn Duyệt
 
G

giangyen

Guest
14/10/05
8
0
0
45
Ha Noi
Vấn đề Data Selector

Bác Duyệt giúp em với. Em có sử dụng phần Data seclector của bác nhưng em muốn thay đổi lại một chút bác giúp em với
Thứ nhất: Em muốn lấy dữ liệu từ Listview ở cột khác mà không lấy ở cột đầu tiên được không(bảng của em có nhiều cột) ?
Thứ hai: ghi gõ vào Textbox để tìm kiếm mã em muốn tìm ký tự hoặc từ bất kỳ trong mã đó mà không nhất thiết phải tìm bắt đầu từ ký tự đầu tiên.
Bác giúp em nhé. Các bác nào biết chỉ giáo giùm. Em xin chân thành cám ơn các bác
 
levanduyet

levanduyet

Welcome
16/10/04
537
19
18
HCM
my.opera.com
giangyen nói:
Bác Duyệt giúp em với. Em có sử dụng phần Data seclector của bác nhưng em muốn thay đổi lại một chút bác giúp em với
Thứ nhất: Em muốn lấy dữ liệu từ Listview ở cột khác mà không lấy ở cột đầu tiên được không(bảng của em có nhiều cột) ?
Thứ hai: ghi gõ vào Textbox để tìm kiếm mã em muốn tìm ký tự hoặc từ bất kỳ trong mã đó mà không nhất thiết phải tìm bắt đầu từ ký tự đầu tiên.
Bác giúp em nhé. Các bác nào biết chỉ giáo giùm. Em xin chân thành cám ơn các bác
Cái dataselector...thì có nhiều điều để nói lắm.
Tôi có update lại, bạn xem source code xem sao.
Thân,
LVD
 
levanduyet

levanduyet

Welcome
16/10/04
537
19
18
HCM
my.opera.com
File Dataselector latest đây.
Thân.
LVD
 

Đính kèm

  • Testdataselector.rar
    139.9 KB · Lượt xem: 608
adam_tran

adam_tran

Guitar inspiration
17/5/05
1,374
36
48
45
Goooogle
Tôi cũng đem dao con đẳn gỗ đây!!!
Trong file này tôi chỉ dùng có 1 control ComboBox và coding trong worksheet thôi.
- Đối với ô đã có dữ liệu, combobox sẽ không dropdown, bạn phải click mouse để thay đổi.
- Đối với ô chưa có dữ liệu, combobox sẽ dropdown cho 1 danh sách. Sau khi chọn xong thì nhấn Esc để hoàn tất.
 

Đính kèm

  • DataPickup.rar
    13.4 KB · Lượt xem: 447
M

mysterious_girl

Guest
X_girl nói:
Chao cac Bac, em muon tai File Dataselector latest nhung kho noi may cong ty em ho dat firewall nen khong tai duoc nhung file.rar va file.exe, cac bac co the chuyen thanh file.zip de em con tai va tham khao file cua cac Bac.

Mình đã chuyển file của bác Adam thành file.zip rồi đây. Lần sau bạn post bài nhớ gõ dấu vào nhé!!!
 
Sửa lần cuối:
HongViet

HongViet

Cao cấp
10/11/05
286
10
18
Đà nẵng
Hay quá!, một khi số mã vật tư >9.999 thì cách nào hay hơn?!

Nếu một xí nghiệp có hơn 9999 mặt hàng thì cách nào hay hơn trong 2 cách trên đã nêu
Xin cho hỏi thêm nếu với 1 vạn mặt hàng tôi phân loại theo ngành (như Điện; năng lương, nhiên liệu; VL xây dựng; KLoại; Giấy gỗ diêm thì nên phát triển của tác giả nào thì thích hợp hơn? (Vì tôi nghĩ là chia nhỏ dễ quản lý ấy mà; Như Axxxxxx là SF ngành điện, Nxxxxxx - SF ngành nhiên liệu . . .
Xin Các cao thủ cho hướng dẫn!
Cảm ơn trước thật nhiều!:wall:
 
O

omron

Guest
28/6/05
34
0
0
46
TPHCM
HongViet nói:
Nếu một xí nghiệp có hơn 9999 mặt hàng thì cách nào hay hơn trong 2 cách trên đã nêu
Xin cho hỏi thêm nếu với 1 vạn mặt hàng tôi phân loại theo ngành (như Điện; năng lương, nhiên liệu; VL xây dựng; KLoại; Giấy gỗ diêm thì nên phát triển của tác giả nào thì thích hợp hơn? (Vì tôi nghĩ là chia nhỏ dễ quản lý ấy mà; Như Axxxxxx là SF ngành điện, Nxxxxxx - SF ngành nhiên liệu . . .
Xin Các cao thủ cho hướng dẫn!
Cảm ơn trước thật nhiều!:wall:

Mình nghĩ như vầy : nếu có nhiều mặt hàng thì nên phân loại theo nhóm hàng (main) trong nhóm hàng thì bao gồm từng loại mặt hàng riêng biệt (sub). Mình chỉ việc chọn nhóm hàng rồi sau đó chọn tên hàng ( đã được lọc theo nhóm hàng or theo kho ), như vậy sẽ chọn rất nhanh. Mình từng làm trong Excel. rất đơn giản !

Theo vi dụ của bạn thì chỉ cần phân loại theo ngành ( điện, nhiên liệu, ...) còn tên hàng thì cứ đặt thỏa mái sao cho dễ nhận diện nhất. Trong Excel cũng cho phép tạo mối quan hệ một nhiều or nhiều nhiều nữa đó !
 
adam_tran

adam_tran

Guitar inspiration
17/5/05
1,374
36
48
45
Goooogle
Bất cứ 1 công ty nào cũng phải lựa chọn và xây dựng cho mình một nguồn lực phù hợp. Nếu số SP, mặt hàng chừng 5000 thì không nên dùng Excel mà dùng phần mềm chuyên nghiệp hơn, không dùng máy PC thường (ngay cả với Petium A >3Ghz) mà dùng những máy chủ chuyên dụng. Không phải 1 và nhân viên mà là 1 hệ thống NV được đào tạo bài bản. Do đó, dù sao trong pạhm vi của các ứng dụng Excel thì chỉ ứng dụng cho những DN nhỏ lẻ mà thôi.
Máy tôi xài P4 2Ghz, DDR 512Mb, cấu hình cài rất ít để tăng tốc độ máy mà xử lý 10.000 records Excel đã chậm lắm rồi!
 
Sửa lần cuối:
O

omron

Guest
28/6/05
34
0
0
46
TPHCM
adam_tran nói:
Bất cứ 1 công ty nào cũng phải lựa chọn và xây dựng cho mình một nguồn lực phù hợp. Nếu số SP, mặt hàng chừng 5000 thì không nên dùng Excel mà dùng phần mềm chuyên nghiệp hơn, không dùng máy PC thường (ngay cả với Petium A >3Ghz) mà dùng những máy chủ chuyên dụng. Không phải 1 và nhân viên mà là 1 hệ thống NV được đào tạo bài bản. Do đó, dù sao trong pạhm vi của các ứng dụng Excel thì chỉ ứng dụng cho những DN nhỏ lẻ mà thôi.
Máy tôi xài P4 2Ghz, DDR 512Mb, cấu hình cài rất ít để tăng tốc độ máy mà xử lý 10.000 records Excel đã chậm lắm rồi!

Chào bạn ! 10.000 records thì đâu có thấm tháp gì ! mình nghĩ do cách sắp xếp và xử lý của bạn thôi. VD đơn giản nhé : Ở ô mã hàng bạn nhập "SF001", cột kế bên là tên hàng thì mọi người hay dùng Vlookup or Index... để lấy được cái tên là "Sản phẩm A". Tại sao chúng ta phải dùng những công thức đó để có được cột tên hàng là "Sản phẩm A" mà k phải bằng cách khác cũng có được SP A.Còn nhiều VD khác ......Như vậy bảng tính sẽ siêu nhẹ dùng bạn sử dụng đủ 65000 records và 254 cột.

Tóm lại là bạn chưa phải là nhà tổ chức tốt cơ sở dữ liệu ! Nếu cơ sở dữ liệu k tốt thì dù bạn xử dụng CPU gì đi nữa, RAm là bao nhiêu GB cũng vẫn k cải thiện đáng kể đâu.

Mình đang sử dụng P2 300Mhz, Ram 128 SD. Vẫn vô tư !:DJ:

Tại sao 2+2+2=6 mà không phải là 2*3
 
Sửa lần cuối:
H

heroic

Guest
11/11/04
56
0
0
vn
Làm thế nào để tăng tốc độ listbox trong Dataselector

Mong các cao thủ chỉ giáo theo tiêu đề trên:
Các ví dụ dataselector rất hay cho việc nhập tìm kiếm mặt hàng nhanh. Nhưng tất cả các ví dụ đều sử dụng vùng tham chiếu không hiểu sao khi truy xuất kéo thanh trượt rất chậm mới hiện lên để thấy mặt hàng cần tìm. làm cho việc áp dụng dataselector rất khó khăn. Mình có tham khảo ví dụ : Synchronize ListBoxes họ viết khi mình kéo thanh trượt dữ liệu có tới cả 2000 dòng mà vẫn hiện lên rất nhanh vậy nguyên nhân là đâu. làm thế nào để kết hợp Synchronize ListBoxes phần listbox vào trong listbox dataselector? Mong các cao thử giúp đệ! Tìm hoài chưa ra! đây là đoạn code đó>
' macros written 20000117 by Ole P. Erlandsen, ope@erlandsendata.no
Option Explicit

Private Sub btnOK_Click()
Me.Hide
If Application.International(xlCountrySetting) = 47 Then ' Norwegian text
MsgBox "Fra ListBox1: " & Me.ListBox1.List(Me.ListBox1.ListIndex) & Chr(13) & Chr(13) & _
"Fra ListBox2: " & Me.ListBox2.List(Me.ListBox2.ListIndex), vbInformation, "Du valgte dette:"
Else ' English text
MsgBox "From ListBox1: " & Me.ListBox1.List(Me.ListBox1.ListIndex) & Chr(13) & Chr(13) & _
"From ListBox2: " & Me.ListBox2.List(Me.ListBox2.ListIndex), vbInformation, "You selected this:"
End If
End Sub

Private Sub ListBox1_Change()
UpdateListBox Me.ListBox2, Me.ListBox1.ListIndex ' update the items in ListBox2
End Sub

Private Sub UserForm_Initialize()
With Me
' edit the caption and labels in the dialog
If Application.International(xlCountrySetting) = 47 Then ' Norwegian text
.Caption = "Synkroniser listebokser"
.Label1.Caption = "Velg en kategori:"
.Label2.Caption = "Velg en enhet fra denne kategorien:"
Else ' English text
.Caption = "Synchronize listboxes"
.Label1.Caption = "Please select a category:"
.Label2.Caption = "Please select an item from this category:"
End If
' update the items in ListBox, this will update the items in ListBox2
UpdateListBox .ListBox1, -1
End With
End Sub

Private Sub UpdateListBox(lb As MSForms.ListBox, IndexValue As Integer)
Const FirstInputRow As Integer = 5
Dim LastInputRow As Integer, ColumnIndex As Integer, InputRange As Range
ColumnIndex = IndexValue + 2 ' determine which column to get list items from
LastInputRow = Cells(FirstInputRow, ColumnIndex).End(xlDown).Row ' determine the last input row
Set InputRange = ActiveSheet.Range(Cells(FirstInputRow, ColumnIndex), Cells(LastInputRow, ColumnIndex))
With lb
.ColumnHeads = True ' use the row above input range as header
.RowSource = InputRange.Address ' set the input range
'.RowSource = "'" & ActiveSheet.Name & "'!" & Range(Cells(FirstInputRow, ColumnIndex), Cells(LastInputRow, ColumnIndex)).Address
'.RowSource = Range(Cells(FirstInputRow, ColumnIndex), Cells(LastInputRow, ColumnIndex)).Address
.ListIndex = 0 ' select the first item
End With
Set InputRange = Nothing
End Sub
 
Sửa lần cuối:
levanduyet

levanduyet

Welcome
16/10/04
537
19
18
HCM
my.opera.com
heroic nói:
Mong các cao thủ chỉ giáo theo tiêu đề trên:
Các ví dụ dataselector rất hay cho việc nhập tìm kiếm mặt hàng nhanh. Nhưng tất cả các ví dụ đều sử dụng vùng tham chiếu không hiểu sao khi truy xuất kéo thanh trượt rất chậm mới hiện lên để thấy mặt hàng cần tìm. làm cho việc áp dụng dataselector rất khó khăn. Mình có tham khảo ví dụ : Synchronize ListBoxes họ viết khi mình kéo thanh trượt dữ liệu có tới cả 2000 dòng mà vẫn hiện lên rất nhanh vậy nguyên nhân là đâu. làm thế nào để kết hợp Synchronize ListBoxes phần listbox vào trong listbox dataselector? Mong các cao thử giúp đệ! Tìm hoài chưa ra! đây là đoạn code đó>
' macros written 20000117 by Ole P. Erlandsen, ope@erlandsendata.no
Option Explicit

Private Sub btnOK_Click()
Me.Hide
If Application.International(xlCountrySetting) = 47 Then ' Norwegian text
MsgBox "Fra ListBox1: " & Me.ListBox1.List(Me.ListBox1.ListIndex) & Chr(13) & Chr(13) & _
"Fra ListBox2: " & Me.ListBox2.List(Me.ListBox2.ListIndex), vbInformation, "Du valgte dette:"
Else ' English text
MsgBox "From ListBox1: " & Me.ListBox1.List(Me.ListBox1.ListIndex) & Chr(13) & Chr(13) & _
"From ListBox2: " & Me.ListBox2.List(Me.ListBox2.ListIndex), vbInformation, "You selected this:"
End If
End Sub

Private Sub ListBox1_Change()
UpdateListBox Me.ListBox2, Me.ListBox1.ListIndex ' update the items in ListBox2
End Sub

Private Sub UserForm_Initialize()
With Me
' edit the caption and labels in the dialog
If Application.International(xlCountrySetting) = 47 Then ' Norwegian text
.Caption = "Synkroniser listebokser"
.Label1.Caption = "Velg en kategori:"
.Label2.Caption = "Velg en enhet fra denne kategorien:"
Else ' English text
.Caption = "Synchronize listboxes"
.Label1.Caption = "Please select a category:"
.Label2.Caption = "Please select an item from this category:"
End If
' update the items in ListBox, this will update the items in ListBox2
UpdateListBox .ListBox1, -1
End With
End Sub

Private Sub UpdateListBox(lb As MSForms.ListBox, IndexValue As Integer)
Const FirstInputRow As Integer = 5
Dim LastInputRow As Integer, ColumnIndex As Integer, InputRange As Range
ColumnIndex = IndexValue + 2 ' determine which column to get list items from
LastInputRow = Cells(FirstInputRow, ColumnIndex).End(xlDown).Row ' determine the last input row
Set InputRange = ActiveSheet.Range(Cells(FirstInputRow, ColumnIndex), Cells(LastInputRow, ColumnIndex))
With lb
.ColumnHeads = True ' use the row above input range as header
.RowSource = InputRange.Address ' set the input range
'.RowSource = "'" & ActiveSheet.Name & "'!" & Range(Cells(FirstInputRow, ColumnIndex), Cells(LastInputRow, ColumnIndex)).Address
'.RowSource = Range(Cells(FirstInputRow, ColumnIndex), Cells(LastInputRow, ColumnIndex)).Address
.ListIndex = 0 ' select the first item
End With
Set InputRange = Nothing
End Sub
Bạn nói Dataseletor chậm, tôi không hiểu tại sao!
Trong ví dụ của tôi có một đoạn mã làm chậm cho việc khởi động mà thôi !
Còn việc khi đã hiển thị thì vẫn bình thường thôi. Tôi đã thử dữ liệu khoảng 2,000 records (dữ liệu tôi đang dùng) đâu có vấn đề gì đâu?
Bạn thử gởi file bạn đang dùng cho mình xem sao?
Thân,
levanduyet@gmail.com
Lê Văn Duyệt
 
H

heroic

Guest
11/11/04
56
0
0
vn
Vấn đề listbox và listview

Kiến thức là biển cả, em mới chỉ học được cách modify các VD chương trình đó làm thử. Nhưng vấn đề của em là em đang áp dụng cái bảng chọn của tuankctdcn sử dụng listbox nên dữ liệu duyệt thanh trượt rất chậm. em đã coi lại cái ví dụ Data Selector của bác Duyệt thì dùng listview đưa từ mảng vào nên rất nhanh, em đã thử 2000 record. Nhưng cái bảng chọn của tuankctdn khi đang ở mã sản phẩm đó em nhấn F4 thì nó tìm ra ngay tên sản phẩm trong form chọn. Còn của Bác thì chưa có mục đó và vùng dữ liệu DMKH khi thay đổi thì lại phải chọn lại vùng define name nên chưa tối ưu.
Có cách nào sửa lại cho dễ áp dụng các ví dụ vào thực tế được gần hơn không nhờ các cao thủ chỉ giáo.(giống như đoạn code phía duới thì không cần phải definame).Em có làm thử nhưng không hiểu cái biến LastInputRow nó làm gì, ở đâu nên chưa thực hiện được.
 
Sửa lần cuối:
T

Tuanktcdcn

Lão già ham vui
18/6/04
549
52
28
46
Hà Nội
www.bluesofts.net
heroic nói:
... Nhưng vấn đề của em là em đang áp dụng cái bảng chọn của tuankctdcn sử dụng listbox nên dữ liệu duyệt thanh trượt rất chậm....

Ví dụ của mình truyền dữ liệu vào Listbox là bằng Name (bản chất là mảng 2 cột Mã|Tên).
 
H

heroic

Guest
11/11/04
56
0
0
vn
.rowsource="BDMHH"

Ví dụ của mình truyền dữ liệu vào Listbox là bằng Name (bản chất là mảng 2 cột Mã|Tên).

Mình không hiểu nhiều về VBA lắm chỉ coi và chạy thử đổi tên chỗ .rowsource = "bảng của mình" để áp dụng vào công việc. vậy Anh có thể giúp mình sửa làm sao lisbox hiện bằng name nhiều dòng mà chạy nhanh được không? Chia sẻ cho mọi người mình tin rằng nó sẽ giúp ích được cho mọi người rất nhiều trong việc nhập liệu.
 
Webketoan PRO

Xem nhiều