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
hay phiên phiến cũng nên bác."Phiên" này là gì bạn ơi? (Phiên bản hay là phiên làm việc, hay là phiên gì đó)
Còn 1 cách khác em hay dùng là lưu vào registry. Chủ bài đăng tìm hiểu Savesetting, Getsetting và deletesettingNế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 đó.
Một cách khác là dùng "Hidden name space" nó lưu thông tin vào bộ nhớ ở tầm vực Application chứ không phải Workbook. Nên nếu mở các workbook cùng một phiên Excel (Excel instance - không biết dịch ra là gì) thì có thể cùng sử dụng. Bạn tìm hiểu Application.Execute4Macro xem có đáp ứng yêu cầu không.
Tôi cũng biết về PERSONAL.xlsb, nhưng mà tôi dùng File Add_In tiện hơn.Thớt hiển nhiên là cứ đòi hỏi chuyện làm đồ án tập file mà bao lâu nay không hề tìm hiểu về PERSONAL.xlsb
File Reference chỉ dùng để khỏi mất công lục file name ra thôi.
Nếu có filename đầy đủ (fullpath) thì cứ gọi thẳng như hàm của PERSONAL
Tôi bỏ lửng vậy xem có biết tự tìm hiểu thêm hôn.
Đồ án ở đây không mấy ai hơn tôi đâu. Công việc của toi là Project Manager.
Tôi nghiên cứu rồi bạn ah. Nhưng mà hình như đều qua trung gian gọi là NameMột cách khác là dùng "Hidden name space" nó lưu thông tin vào bộ nhớ ở tầm vực Application chứ không phải Workbook.
Phieuthu = Workbooks(Filedieukhien).Names(Phieuthu_Name)
Phieuchi = Workbooks(Filedieukhien).Names(Phieuchi_Name)
Giaydenghitamung = Workbooks(Filedieukhien).Names(Giaydenghitamung_Name)
...
Tôi thấy tài liệu ghi là hidden name space thường dùng cho các Addin đó bạn. Để tôi tìm hiểu trường hợp của bạn xem như thế nào.Tôi nghiên cứu rồi bạn ah. Nhưng mà hình như đều qua trung gian gọi là Name
Nhu cầu thực sự của tôi là: Khi gán giá trị vào Biến Phieuchi (Khi đó Mũi tên màu vàng đang ở Module File Excel A), sau đó Mũi tên màu vàng chạy sang Module ở File Excel B thì Biến Phieuchi (Cùng tên biến Phieuchi ở File Excel A) ở File Excel B tự động cập nhật giá trị (Giống như là biến ở dạng Public vậy)
Mà thôi, dùng qua Name cũng được.
Có điều khi truyền giá trị từ Name vào các biến ở File Excel B thì nó lắt nhắt dài dòng, dạng như vầy:
=> Không biết là có cách nào dùng vòng lặp để nạp giá trị từ Name vào các biến tương ứng không nhỉ?Mã:Phieuthu = Workbooks(Filedieukhien).Names(Phieuthu_Name) Phieuchi = Workbooks(Filedieukhien).Names(Phieuchi_Name) Giaydenghitamung = Workbooks(Filedieukhien).Names(Giaydenghitamung_Name) ...
Bạn có thấy kiến thức ở mấy bài gần đây khác hẳn với kiến thức cúa người viết bài #1 không?Tôi thấy tài liệu ghi là hidden name space thường dùng cho các Addin đó bạn. Để tôi tìm hiểu trường hợp của bạn xem như thế nào.
Điểm chính của Personal.xlsb là nó mở ra và tự chạy khi Excel khởi động (giống như các add-ons khác).Tôi có làm cái ví dụ (đơn giản thôi nhé) minh họa cho việc dùng PERSONAL.xlsb như hình. Ví dụ này cũng phải cùng một phiên làm việc Excel thì mới truyền tham số được nhé.
Có máy có sẳn file này, có máy không (máy tôi không có sẵn, nên phải tự tạo). File này tự chạy khi Excel khởi chạy.
...
Dim arrName() As String
Dim nm As Name
Dim i As Integer
i = 0
For Each nm In ThisWorkbook.Names
i = i + 1
ReDim Preserve arrName(1 To i)
arrName(i) = nm.Name
Next nm
Bài #9 này cố "đơn giản hóa" vấn đề trước khi biết rõ các điều kiện của vấn đề. Kết tội mọi người "phức tạp hóa" ý thớt. Đưa ra giải pháp sai bét mờ bác xem chi.Buồn buồn xem code bài 9:
...
ủ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ôi muốn nói về code lỗi mà không biết, chứ bài 5 của tôi cũng đơn giản nhưng là đơn giản đúng theo yêu cầu bài 1, chứ không phải đơn giản hóa.Bài #9 này cố "đơn giản hóa" vấn đề trước khi biết rõ các điều kiện của vấn đề. Kết tội mọi người "phức tạp hóa" ý thớt. Đưa ra giải pháp sai bét mờ bác xem chi.
Ấy dà, ngại quá, em đang làm trên nền file khác có thử 1 lần mà không kiểm tra lại nội dung trước khi đăng....Chạy code này xong chẳng thấy cái name nào, kể cả name ẩn.
Xóa dòng On Error Resume next thì lỗi dòng thứ Đầu tiên For i = 2 to ... Xem kỹ thì tên sheet là Sheet1, mà đòi sheet CodeName là Data
Sửa tên sheet thì lỗi dòng ẩn name: Gán Name = Cells(5, i) mà ẩn name Cells(3, i)
Còn 1 cái sai mà không sinh ra lỗi, đó là RefersTo không lấy value của Cells(3, i) mà lấy Column của nó. Thử 1 lần mà không thấy.Ấy dà, ngại quá, em đang làm trên nền file khác có thử 1 lần mà không kiểm tra lại nội dung trước khi đăng....