hung2412
Thành viên tích cực


- Tham gia
- 5/8/08
- Bài viết
- 929
- Được thích
- 240
- Giới tính
- Nam
Không hiểu, biến là biến thế nào?Xin chào các bạn GPE!
Có cách nào nạp một loạt giá trị Name (Name trong Name Manager) vào các Biến tương ứng trong VBA hay không?
Mong các bạn chỉ giúp cho
Xin cảm ơn
Mục đích để làm gì để xem giải pháp thế nào, chứ mình vẫn chưa hiểu vấn đề (chắc người khác cũng không hiểu nên giờ vẫn chưa thấy ai trả lời).Có gì đâu bạn, biến như là Public Bien_1 as String chẳng hạn
For i = 1 to 7
Bien(i) =Sheet1.Range("Name_" & i).Value
Next
Thớt không biết căn bản về biến cho nên mới có ý tưởng ấy.Khai báo Bien(1 to 7) chứ đừng khai báo 7 biến riêng lẻ
Sau đó:
. ..Mã:For i = 1 to 7 Bien(i) =Sheet1.Range("Name_" & i).Value Next
Không có vòng lặp thì không có biến i. Không khai báo XNames(1 to 7) thì không gán giá trị XNames(2) đượcPublic Function XNames(ByVal i As Long) As Variant
XNames =Sheet1.Range("Name_" & i).Value
End Function
...
a = XNames(2)
- Ban đầu là chạy Code từ File Excel A (Mũi tên màu vàng chạy trong Module của File Excel A), có các biến là Phieuthu, Phieuchi, Giaydenghithanhtoan,... (Còn như Bien_1, Bien_2, Bien_3,... chỉ là minh họa mà thôi)Mục đích để làm gì để xem giải pháp thế nào, chứ mình vẫn chưa hiểu vấn đề (chắc người khác cũng không hiểu nên giờ vẫn chưa thấy ai trả lời).
Bien_1, Bien_2,... chỉ là minh họa thôi ạ. Trên thực tế tên các biến là Phieuthu, phieuchi,...Khai báo Bien(1 to 7) chứ đừng khai báo 7 biến riêng lẻ
Sau đó:
Mã:For i = 1 to 7 Bien(i) =Sheet1.Range("Name_" & i).Value Next
Nếu name là 1 giá trị hằng như trong file thì thay Sheet1.Range bằng ThisWorkbook.Names
Nếu muốn từ A đến Z thì bạn chỉ việc hỏi làm thế nào để đi từ A đến Z, đừng tự vẽ ra con đường A-B-C..Y-Z rồi hỏi từng đoạn vì có thể có đường tắt đi thẳng từ A đến Z mà không qua B-Y.- Ban đầu là chạy Code từ File Excel A (Mũi tên màu vàng chạy trong Module của File Excel A), có các biến là Phieuthu, Phieuchi, Giaydenghithanhtoan,... (Còn như Bien_1, Bien_2, Bien_3,... chỉ là minh họa mà thôi)
- Mình truyền các biến Phieuthu, Phieuchi, Giaydenghithanhtoan,... ở trên vào các Name (Cái này mình biết dùng vòng lặp)
- Sau đó Mũi tên màu vàng chạy đến Module của File Excel B
- Tại đây mình muốn truyền giá trị các Name ở trên (Các Name này đã nạp giá trị từ các biến rồi) vào các biến tương ứng Phieuthu, Phieuchi, Giaydenghithanhtoan,.. ở File Excel B
=> Nạp thủ công từng Name vào biến thì mình biết (Phieuthu = Workbooks(FileExcelB).Names(Name_gi_do)). Nhưng làm thế nào để dùng vòng lặp hoặc Array gì đó cho nhanh?
Bài đã được tự động gộp:
Bien_1, Bien_2,... chỉ là minh họa thôi ạ. Trên thực tế tên các biến là Phieuthu, phieuchi,...
Còn Bien(i) =Sheet1.Range("Name_" & i).Value => Thực tế thì trên File Excel sẽ không có như thế, chỉ là minh họa để nêu câu hỏi mà thôi
Mà gán các biến xuống Sheet thì dùng Name làm gì nữa ạ (Thực tế sẽ không như thế)
Biến Phieuthu ở File Excel A làm sao mà truyền trực tiếp sang biến Phieuthu ở File Excel B được (Mũi tên màu vàng chạy từ Module File Excel A sang Module File Excel B)? (Mình Test rồi, nhưng không được, cho dù khai báo là Public đi chăng nữa)- Trường hợp thủ tục B được gọi trực tiếp thông qua câu lệnh ở thủ tục A thì quá đơn giản, cứ truyền trực tiếp không cần phải qua trung gian gì cả.
Mình có thử dùng References Project, nhưng không đáp ứng được nhu cầu do File References không cố định, vả lại nó không References chéo cho nhau được. Bạn có cách nào tốt hơn không (Không dùng gán xuống Sheet nhé)- Trường hợp thủ tục B không được gọi trực tiếp từ thủ tục A (kích hoạt bằng sự kiện, hoặc người dùng) thì cũng có nhiều cách khác hiệu quả hơn là ghi vào Names.
File Excel mình gõ các biến Bien_1, Bien_2,... chỉ là minh họa thôiủa, Thấy có vẻ mọi người làm phức tạp hóa ý bác ấy lên sao ấy nhỉ. Code trong file bác tham khảo xem đúng chưa?
Tự anh ta hỏi kiểu đó ở bài 1, tôi trả lời ý như bài 1. ngoài ra trong file tất cả name mẫu đều là hằng. Tới bài 8 thì mới phức tạp: Lòi đâu ra name tùm lum, biến tùm lum, lại cò 2 file A và B.ủa, Thấy có vẻ mọi người làm phức tạp hóa ý bác ấy lên sao ấy nhỉ. Code trong file bác tham khảo xem đúng chưa?
1. Bài 1 làm quái gì có file A với file B?- Ban đầu là chạy Code từ File Excel A (Mũi tên màu vàng chạy trong Module của File Excel A), có các biến là Phieuthu, Phieuchi, Giaydenghithanhtoan,... (Còn như Bien_1, Bien_2, Bien_3,... chỉ là minh họa mà thôi)
- Mình truyền các biến Phieuthu, Phieuchi, Giaydenghithanhtoan,... ở trên vào các Name (Cái này mình biết dùng vòng lặp)
...
Còn Bien(i) =Sheet1.Range("Name_" & i).Value => Thực tế thì trên File Excel sẽ không có như thế, chỉ là minh họa để nêu câu hỏi mà thôi
Mà gán các biến xuống Sheet thì dùng Name làm gì nữa ạ (Thực tế sẽ không như thế)
Mình không làm được không có nghĩa là không có cách làm.Mình Test rồi, nhưng không được, cho dù khai báo là Public đi chăng nữa
Khái niệm "XY problem" mà ngày xưa anh đi tìm kiếmNếu muốn từ A đến Z thì bạn chỉ việc hỏi làm thế nào để đi từ A đến Z, đừng tự vẽ ra con đường A-B-C..Y-Z rồi hỏi từng đoạn vì có thể có đường tắt đi thẳng từ A đến Z mà không qua B-Y.
Đây là code thử. XNames trong các sub/func khác được sử dụng in hệt một array.Không có vòng lặp thì không có biến i. Không khai báo XNames(1 to 7) thì không gán giá trị XNames(2) được
Nếu Function có biến i thì rốt cục phải tạo 7 function(s)
...
Tôi nhầm ở bài 7. Nhưng giờ thì chẳng còn ý nghĩa khỉ gì nữa.Chỉ có các tên đặc thù thì mới cần mỗi name một function
Đúng là cái này bạn ơi. Bạn có thể nói cụ thể hơn được không?Nếu đúng như vậy thì sẽ như sau:
- Trường hợp thủ tục B được gọi trực tiếp thông qua câu lệnh ở thủ tục A thì quá đơn giản, cứ truyền trực tiếp không cần phải qua trung gian gì cả.
Tôi không chủ ý làm theo ý của thớt.ủa, Thấy có vẻ mọi người làm phức tạp hóa ý bác ấy lên sao ấy nhỉ. Code trong file bác tham khảo xem đúng chưa?
Nếu là 2 file Excel khác nhau nhưng muốn truyền tham số cho nhau thì có một cách lòng vòng khác là: File A lưu tên biến và giá trị của nó vào file tạm (.csv, .txt) rồi từ file B đọc file tạm đó.Biến Phieuthu ở File Excel A làm sao mà truyền trực tiếp sang biến Phieuthu ở File Excel B được (Mũi tên màu vàng chạy từ Module File Excel A sang Module File Excel B)? (Mình Test rồi, nhưng không được, cho dù khai báo là Public đi chăng nữa)
Bài đã được tự động gộp: