Nhờ giúp đỡ form truy vấn dữ liệu

Liên hệ QC

vanthinh3101

Thành viên tích cực
Tham gia
24/1/15
Bài viết
1,112
Được thích
1,436
Giới tính
Nam
Nghề nghiệp
Finance
Kính gửi mọi người,
Để file dữ liệu được hoàn thiện hơn, xin mọi người giúp đỡ về phần truy vấn dữ liệu.
Tôi đã viết được code đối Add_Data để chuyển dữ liệu từ sheets("Information") sang sheets("Data").
Yêu cầu như sau:
- Khi ấn nút Query sẽ hiện lên 1 form để nhập 2 thông tin là Họ tên, CIF thông tin để truy vấn dữ liệu .
- Khi điền 1/2 hoặc 2/2 thông tin này đều sẽ cho ra kết quả truy vấn vào các ô dữ liệu trong sheets("Information"). Trường hợp ra 2 kết quả, sẽ có phần để lựa chọn hiển thị kết quả nào.
- Sau khi hiện ra kết quả truy vấn, nếu có chỉnh sửa gì thì chỉ cần ấn nút Update_Data là dữ liệu cũ bên Sheets("Data") sẽ được cập nhật.
 

File đính kèm

  • DATA_Question.xlsb
    34.7 KB · Đọc: 5
Mình chỉ xin góp í với macro Info2Data() trong có trong file của bạn thôi:

Bạn khai báo thêm 1 biến Col kiểu Integer

Khi đó đoạn mã lệnh:
Mã:
.Range("D" & lr).Value = wS.Range("B2")
        .Range("E" & lr).Value = wS.Range("B3")
        .Range("F" & lr).Value = wS.Range("B4")
        .Range("G" & lr).Value = wS.Range("B5")
        .Range("H" & lr).Value = wS.Range("B6")
        .Range("I" & lr).Value = wS.Range("B7")
        .Range("J" & lr).Value = wS.Range("B8")
        .Range("K" & lr).Value = wS.Range("B9")
        .Range("L" & lr).Value = wS.Range("B10")
        .Range("M" & lr).Value = wS.Range("B11")
        .Range("N" & lr).Value = wS.Range("B12")
        .Range("O" & lr).Value = wS.Range("B13")
        .Range("P" & lr).Value = wS.Range("B14")
        .Range("Q" & lr).Value = wS.Range("B15")
có thể chuyển thành
PHP:
        For Col = 4 To 17       '4:D; 17:Q'
            .Cells(ir, Col).Value = wS.Cells(Col - 2, "b").Value
        Next Col
trông dễ nhìn hơn, phải vậy không?

& cứ như thế, bạn có thể rút gọn macro thân thương của bạn tiếp được nữa đó; Thử xem!
 
Upvote 0
Kính gửi mọi người,
Để file dữ liệu được hoàn thiện hơn, xin mọi người giúp đỡ về phần truy vấn dữ liệu.
Tôi đã viết được code đối Add_Data để chuyển dữ liệu từ sheets("Information") sang sheets("Data").
Yêu cầu như sau:
- Khi ấn nút Query sẽ hiện lên 1 form để nhập 2 thông tin là Họ tên, CIF thông tin để truy vấn dữ liệu .
- Khi điền 1/2 hoặc 2/2 thông tin này đều sẽ cho ra kết quả truy vấn vào các ô dữ liệu trong sheets("Information"). Trường hợp ra 2 kết quả, sẽ có phần để lựa chọn hiển thị kết quả nào.
- Sau khi hiện ra kết quả truy vấn, nếu có chỉnh sửa gì thì chỉ cần ấn nút Update_Data là dữ liệu cũ bên Sheets("Data") sẽ được cập nhật.
Dữ liệu của bạn lấy từ Data sang "không trật tự", phải tìm cách cho nó có 1 "trật tự" nào đó để dễ nhập, xuất.
Tôi tạo 2 cột phụ B và I, bạn có thể ẩn 2 cột này sau khi kiểm tra kết quả xong, nếu có "lộn cột" cũng chỉ chỉnh lại con số trong hai cột này.
- Nhập 1 ô N4 hoặc O4, hoặc cả hai - Bấm nút tìm kiếm - Kết quả hiện ra ở N10, O10 (xuống dưới nếu có trùng)
- Nhập lại đầy đủ 2 ô N4 va O4 - Bấm nút Lấy dữ liệu.
- Nếu có thay đổi, Bấm nút Cập nhật.
Chú ý: Tất cả đều dựa vào 2 cột phụ, Không để bị xóa các số trên đó.
 

File đính kèm

  • DATA_Question.rar
    36.6 KB · Đọc: 17
Upvote 0
Mình chỉ xin góp í với macro Info2Data() trong có trong file của bạn thôi:

Bạn khai báo thêm 1 biến Col kiểu Integer

Khi đó đoạn mã lệnh:
Mã:
.Range("D" & lr).Value = wS.Range("B2")
        .Range("E" & lr).Value = wS.Range("B3")
        .Range("F" & lr).Value = wS.Range("B4")
        .Range("G" & lr).Value = wS.Range("B5")
        .Range("H" & lr).Value = wS.Range("B6")
        .Range("I" & lr).Value = wS.Range("B7")
        .Range("J" & lr).Value = wS.Range("B8")
        .Range("K" & lr).Value = wS.Range("B9")
        .Range("L" & lr).Value = wS.Range("B10")
        .Range("M" & lr).Value = wS.Range("B11")
        .Range("N" & lr).Value = wS.Range("B12")
        .Range("O" & lr).Value = wS.Range("B13")
        .Range("P" & lr).Value = wS.Range("B14")
        .Range("Q" & lr).Value = wS.Range("B15")
có thể chuyển thành
PHP:
        For Col = 4 To 17       '4:D; 17:Q'
            .Cells(ir, Col).Value = wS.Cells(Col - 2, "b").Value
        Next Col
trông dễ nhìn hơn, phải vậy không?

& cứ như thế, bạn có thể rút gọn macro thân thương của bạn tiếp được nữa đó; Thử xem!
Em cám ơn bác đã góp ý, em sẽ sửa lại code theo hướng dẫn.
 
Upvote 0
Dữ liệu của bạn lấy từ Data sang "không trật tự", phải tìm cách cho nó có 1 "trật tự" nào đó để dễ nhập, xuất.
Tôi tạo 2 cột phụ B và I, bạn có thể ẩn 2 cột này sau khi kiểm tra kết quả xong, nếu có "lộn cột" cũng chỉ chỉnh lại con số trong hai cột này.
- Nhập 1 ô N4 hoặc O4, hoặc cả hai - Bấm nút tìm kiếm - Kết quả hiện ra ở N10, O10 (xuống dưới nếu có trùng)
- Nhập lại đầy đủ 2 ô N4 va O4 - Bấm nút Lấy dữ liệu.
- Nếu có thay đổi, Bấm nút Cập nhật.
Chú ý: Tất cả đều dựa vào 2 cột phụ, Không để bị xóa các số trên đó.
Em cám ơn bác đã giúp em.
Bác có thể xem lại giúp em 1 chút được không ah?
Việc tìm kiếm thì ra được kết quả rồi, nhưng sau khi có kết quả tìm kiếm, em ấn nút Lấy dữ liệu thì các thông tin trên cột dữ liệu ở sheets("Information") vẫn trống bác ah, không thấy ra kết quả.
Ngoài ra, em sơ suất kho trình bày rõ, trong sheets("Information"), các ô dữ liệu có bôi màu xanh nhạt là em đã để công thức, em dự kiến sẽ khóa lại, các ô khác có dữ liệu sẽ tự động nhảy ra được.
Em phiền bác giúp em thêm 1 chút nữa nhé!
 
Upvote 0
Em cám ơn bác đã giúp em.
Bác có thể xem lại giúp em 1 chút được không ah?
Việc tìm kiếm thì ra được kết quả rồi, nhưng sau khi có kết quả tìm kiếm, em ấn nút Lấy dữ liệu thì các thông tin trên cột dữ liệu ở sheets("Information") vẫn trống bác ah, không thấy ra kết quả.
Ngoài ra, em sơ suất kho trình bày rõ, trong sheets("Information"), các ô dữ liệu có bôi màu xanh nhạt là em đã để công thức, em dự kiến sẽ khóa lại, các ô khác có dữ liệu sẽ tự động nhảy ra được.
Em phiền bác giúp em thêm 1 chút nữa nhé!
1/ Không chạy có thể bạn chưa nhập đủ 2 ô N4 và O4, code lọc theo điều kiện N4 và O4 chứ không phải N10 và O10, vì bạn nói có thể trùng ra nhiều dòng, đâu biết lấy dòng nào. Phải xác định lại bằng N4 và O4 rồi mới bấm nút Lấy dữ liệu.
2/ Muốn giữ lại công thức thì xóa số trong 2 cột phụ trước dòng công thức.
Bạn nhìn vào kiểu lấy dữ liệu sẽ dễ chỉnh sửa mà.
3/ Nếu sử dụng Form này để nhập dữ liệu mới thì phải có 1 code khác nhập mới, tiếp tục ghi vào dòng kế tiếp bên Data.
 

File đính kèm

  • DATA_Question.rar
    36.9 KB · Đọc: 7
Upvote 0
1/ Không chạy có thể bạn chưa nhập đủ 2 ô N4 và O4, code lọc theo điều kiện N4 và O4 chứ không phải N10 và O10, vì bạn nói có thể trùng ra nhiều dòng, đâu biết lấy dòng nào. Phải xác định lại bằng N4 và O4 rồi mới bấm nút Lấy dữ liệu.
2/ Muốn giữ lại công thức thì xóa số trong 2 cột phụ trước dòng công thức.
Bạn nhìn vào kiểu lấy dữ liệu sẽ dễ chỉnh sửa mà.
3/ Nếu sử dụng Form này để nhập dữ liệu mới thì phải có 1 code khác nhập mới, tiếp tục ghi vào dòng kế tiếp bên Data.
Em làm phiền bác thêm 1 chút với ah.
- Nhờ cột phụ của bác, em đã viết lại được code để thêm dữ liệu mới rất gọn gàng rồi (AddNewData)
- Em cũng đã nghĩ ra cách để vừa giữ số ở cột phụ, vừa giữ được công thức ở các ô bôi xanh
- Em đã sửa code TimKiem để thêm 1 dữ liệu AdvancedFilter là số HĐ --> Bác giúp em sửa code LOC_Data và CapNhat để code chạy theo cả tiêu chí là số HĐ nhé!
Em cám ơn bác nhiều.
 

File đính kèm

  • DATA - Question.xlsb
    40.6 KB · Đọc: 1
Upvote 0
Em làm phiền bác thêm 1 chút với ah.
- Nhờ cột phụ của bác, em đã viết lại được code để thêm dữ liệu mới rất gọn gàng rồi (AddNewData)
- Em cũng đã nghĩ ra cách để vừa giữ số ở cột phụ, vừa giữ được công thức ở các ô bôi xanh
- Em đã sửa code TimKiem để thêm 1 dữ liệu AdvancedFilter là số HĐ --> Bác giúp em sửa code LOC_Data và CapNhat để code chạy theo cả tiêu chí là số HĐ nhé!
Em cám ơn bác nhiều.
Tôi thấy bạn cũng "rành" VBA mà còn hỏi "chuyện nhỏ" này sao?
- Tôi đang viết theo dạng mảng trong VBA, bạn "nhặt" từng cell rồi ghi từng cell vào Data?
- Tôi chưa thấy "nghĩ ra cách để vừa giữ số ở cột phụ, vừa giữ được công thức ở các ô bôi xanh"
- Bạn sửa được "Tìm Kiếm' mà không sửa được "code LOC_Data và CapNhat",có 2 điều kiện rồi, thêm 1 điều kiện nữa thôi mà.
----------------------------------------------
Bạn làm "chuyện lớn" với số tiền lớn, "trật con toán, bán con trâu", trong code không nên "On Error Resume Next", tất cả lỗi bị bỏ qua, số liệu "tào lao" là "tàn mạt". Thà để lỗi mà còn biết để kiểm tra, chỉnh sửa.
 

File đính kèm

  • DATA_Question2.rar
    35.2 KB · Đọc: 20
Lần chỉnh sửa cuối:
Upvote 0
Tôi thấy bạn cũng "rành" VBA mà còn hỏi "chuyện nhỏ" này sao?
- Tôi đang viết theo dạng mảng trong VBA, bạn "nhặt" từng cell rồi ghi từng cell vào Data?
- Tôi chưa thấy "nghĩ ra cách để vừa giữ số ở cột phụ, vừa giữ được công thức ở các ô bôi xanh"
- Bạn sửa được "Tìm Kiếm' mà không sửa được "code LOC_Data và CapNhat",có 2 điều kiện rồi, thêm 1 điều kiện nữa thôi mà.
Em thú thực với bác là em đi học mót, học lỏm chứ em ko rành về hàm mảng, cứ động đến mảng là em như "mù chữ" luôn.
Em mới ở dạng sơ cấp thôi.
Em quên chưa đưa thêm code vào code LOC_Data, em sẽ thêm mấy dòng code phía dưới, đặt lại Formula cho mấy dòng đó.
Em cám ơn bác đã giúp đỡ.
Em làm file này là để giúp cho việc soạn thảo hồ sơ tín dụng và in ấn hàng loạt, cuối cùng cũng đã hoàn thành được rồi :clap2:
 
Upvote 0
Em thú thực với bác là em đi học mót, học lỏm chứ em ko rành về hàm mảng, cứ động đến mảng là em như "mù chữ" luôn.
Em mới ở dạng sơ cấp thôi.
Em quên chưa đưa thêm code vào code LOC_Data, em sẽ thêm mấy dòng code phía dưới, đặt lại Formula cho mấy dòng đó.
Em cám ơn bác đã giúp đỡ.
Em làm file này là để giúp cho việc soạn thảo hồ sơ tín dụng và in ấn hàng loạt, cuối cùng cũng đã hoàn thành được rồi :clap2:
Bạn chú ý đoạn cuối bài #8 bên trên, "xương máu" đấy! Không lạm dụng được đâu.
 
Upvote 0
Web KT
Back
Top Bottom