Hàm tự tạo trùng với define name

Liên hệ QC

nn.tien

Thành viên mới
Tham gia
12/6/09
Bài viết
19
Được thích
2
Mình có 1 số hàm tự tạo thường xuyên sử dụng, nhưng đôi khi file excel của đối tác gửi thì lại có 1 số Define name trùng với tên hàm mình đặt nên khi dùng hàm đó thì bị báo lỗi #REF!
ví dụ: hàm mình dùng là Taikhoan() và trong file của excel có define name là Taikhoan
Vậy khi mình đặt công thức ở ô B2 gọi hàm =Taikhoan(A2) thì ko ra kết quả mà hiện lên #REF!

Mình có test thử đặt Define name trùng với hàm có sẵn ví dụ If thì khi dùng hàm if vẫn bình thường

Kính nhờ các bạn chỉ giúp cách khắc phục!
Trân trọng cảm ơn!

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Mình có 1 số hàm tự tạo thường xuyên sử dụng, nhưng đôi khi file excel của đối tác gửi thì lại có 1 số Define name trùng với tên hàm mình đặt nên khi dùng hàm đó thì bị báo lỗi #REF!
ví dụ: hàm mình dùng là Taikhoan() và trong file của excel có define name là Taikhoan
Vậy khi mình đặt công thức ở ô B2 gọi hàm =Taikhoan(A2) thì ko ra kết quả mà hiện lên #REF!

Mình có test thử đặt Define name trùng với hàm có sẵn ví dụ If thì khi dùng hàm if vẫn bình thường

Kính nhờ các bạn chỉ giúp cách khắc phục!
Trân trọng cảm ơn!

bạn đổi sang khung lớn, gửi file lên.
 
Upvote 0
Mình có 1 số hàm tự tạo thường xuyên sử dụng, nhưng đôi khi file excel của đối tác gửi thì lại có 1 số Define name trùng với tên hàm mình đặt nên khi dùng hàm đó thì bị báo lỗi #REF!
ví dụ: hàm mình dùng là Taikhoan() và trong file của excel có define name là Taikhoan
Vậy khi mình đặt công thức ở ô B2 gọi hàm =Taikhoan(A2) thì ko ra kết quả mà hiện lên #REF!

Mình có test thử đặt Define name trùng với hàm có sẵn ví dụ If thì khi dùng hàm if vẫn bình thường

Kính nhờ các bạn chỉ giúp cách khắc phục!
Trân trọng cảm ơn!

Vẫn xài được nếu bạn ghi đầy đủ thế này: =Module1.TaiKhoan()
Chổ màu đỏ là tên chính xác của module chứa hàm
 
Upvote 0
Vẫn xài được nếu bạn ghi đầy đủ thế này: =Module1.TaiKhoan()
Chổ màu đỏ là tên chính xác của module chứa hàm

cám ơn anh đã chỉ cách này, nhưng ví dụ define name là module1.taikhoan thì khi đó cũng ko dùng được, liệu có cách nào tránh được việc này ko ạ?
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
cám ơn anh đã chỉ cách này, nhưng ví dụ define name là module1.taikhoan thì khi đó cũng ko dùng được, liệu có cách nào tránh được việc này ko ạ?

Có thể sẩy ra trường hợp như bạn nói. Nhưng hãy xét thực tế. Bạn làm việc với bao nhiêu đối tác? Hàng trăm, hành nghìn? Xác suất là có tập tin nào đó của đối tác nào đó có name trùng với tên hàm tự tạo của bạn là bao nhiêu? Chắc chắn nhỏ. Còn trường hợp trùng cả tên module và tên hàm thì lại cực kỳ nhỏ.
Cái tập tin của đối tác chắc chắn không dùng hàm tự tạo của bạn vì khi đó nó đã lỗi ngay khi đối tác dùng rồi. Vậy chỉ có trường hợp bạn nhận được tập tin của đối tác và bây giờ bạn muốn dùng hàm của mình trong tập tin đó. Nói cách khác: đôi khi bạn phải xử lý "sự cố".

Bạn hãy nghĩ xem. Nếu bạn muốn dùng hàm trong nhiều công thức thì chả nhẽ khi gõ mỗi mỗi công thức bạn phải gõ thêm "Module1."? Đấy là chưa nói tới chuyện tập tin có name là "Module1.taikhoan" mặc dù cơ hội khi mà name có tên trùng với tên module và trùng cả với tên hàm của bạn là cực kỳ nhỏ. Vậy thì bạn có một cách nhọc công ít nhất. Trong tập tin bạn đổi name thành tên khác. Cho dù trong tập tin đối tác đã dùng name ở 1000 chỗ thì sau khi bạn đổi tên thì ở 1000 chỗ đó "tự nhiên" name sẽ được cập nhật. Nếu name được dùng cả ở trong code thì dùng Edit --> Replace... trong VBE. Thực ra những chỗ đó cùng lắm thì chỉ "mười mấy chỗ" nên việc replace cũng không nhọc công. Xét trong bối cảnh xác suất trùng name là nhỏ thì cơ hội để bạn nhọc ông là rất ít.
Vậy thì: đổi tên name 1 lần và gõ công thức 1000 lần chỉ là taikhoan
----------------
Còn nếu bạn không muốn đổi tên name thì bạn đổi tên Module có hàm thành tên khác, vd. Secret, miễn sao không trùng với name là được. Chuyện đổi tên là 1 click chuột và gõ vài ký tự nên bạn chắc không nói là: "Tốn sức quá"? Rồi sau đó gõ công thức: Secret.taikhoan. Thế thôi.

Thậm chí nếu Module1 có chứa hàm không chỉ dùng trong 1 tập tin mà bạn đã ghi ra đĩa, vd. ở tư mục "Thu vien" để trong tương lai dùng trong nhiều tập tin thì mỗi lần dùng bạn Import Module1. Khi gặp phải đối tác A như trên thì bạn đổi tên thành Secret. Còn với các đối tác B, C thì chỉ Import Module1 mà thôi.
 
Upvote 0
Cái File test bạn đưa lên chỉ là File giả định, tại B1, B2 của sheet1 tôi thấy bạn không sử dụng Name trong hàm mà là Link từ sheet này qua sheet khác, thực tế để sử dụng Name bằng Code thì các cao thủ họ đều làm được, nhưng File test bạn giả định chưa cụ thể nên chưa ai giúp bạn được. Để cụ thể cái bạn cần thì nên đưa ra File thực tế bạn đã sử dụng hàm lên (khoảng 5 dòng dữ liệu là đủ) và muốn đặt Name trong hàm chỗ nào thì cần phải nêu rỏ và tốt nhất là ngay chỗ Cell nào có hàm bạn gõ dấu nháy phía trước để cho nó hiện hàm đó ra rồi tô đỏ chỗ bạn cần đặt Name thì sẽ cụ thể hơn, chứ bạn giả định kiểu File test ở trên thì không ai hiểu nổi.

Theo File test ở trên thì tôi hiểu như File đính kèm.
 

File đính kèm

  • test.xls
    28.5 KB · Đọc: 18
Upvote 0
Cái File test bạn đưa lên chỉ là File giả định, tại B1, B2 của sheet1 tôi thấy bạn không sử dụng Name trong hàm mà là Link từ sheet này qua sheet khác, thực tế để sử dụng Name bằng Code thì các cao thủ họ đều làm được, nhưng File test bạn giả định chưa cụ thể nên chưa ai giúp bạn được. Để cụ thể cái bạn cần thì nên đưa ra File thực tế bạn đã sử dụng hàm lên (khoảng 5 dòng dữ liệu là đủ) và muốn đặt Name trong hàm chỗ nào thì cần phải nêu rỏ và tốt nhất là ngay chỗ Cell nào có hàm bạn gõ dấu nháy phía trước để cho nó hiện hàm đó ra rồi tô đỏ chỗ bạn cần đặt Name thì sẽ cụ thể hơn, chứ bạn giả định kiểu File test ở trên thì không ai hiểu nổi.

Theo File test ở trên thì tôi hiểu như File đính kèm.

Tôi thấy đã viết rõ mà.
Chủ topic có hàm taikhoan và muốn lập công thức dùng hàm taikhoan này. Nhưng công thức =taikhoan(A1) và công thức module1.taikhoan(A1) đều không được vì có 2 name là taikhoan và module1.taikhoan. Vậy chủ topic hỏi cách khắc phục - làm sao dùng được hàm taikhoan
 
Upvote 0
Tôi thấy đã viết rõ mà.
Chủ topic có hàm taikhoan và muốn lập công thức dùng hàm taikhoan này. Nhưng công thức =taikhoan(A1) và công thức module1.taikhoan(A1) đều không được vì có 2 name là taikhoan và module1.taikhoan. Vậy chủ topic hỏi cách khắc phục - làm sao dùng được hàm taikhoan

Thông thường người ta dùng 1 hàm kết hợp với Name để công thức được gọn gàng, nhưng tác giả không sử dụng hàm và cũng không nêu rỏ mục đích nên tôi cũng không hiểu tác giả cần dùng name để làm gì?
 
Upvote 0
Thông thường người ta dùng 1 hàm kết hợp với Name để công thức được gọn gàng, nhưng tác giả không sử dụng hàm và cũng không nêu rỏ mục đích nên tôi cũng không hiểu tác giả cần dùng name để làm gì?
Em thấy bài #1 của tác giả và bài #8 của anh siwtom đã viết rõ ràng mục đích rồi mà. Có thể nói lại: Tác giả không cần dùng Name để làm gì cả mà muốn 3 anh chàng này (hàm tự tạo Taikhoan - đặt trong Module1, name Taikhoan và name Module1.Taikhoan) sống chung với nhau một cách hòa thuận, anh nào làm đúng việc của anh đó.
 
Upvote 0
nếu ko đi được đường này thì ta đi đường khác, đổi tên hàm thành một cái tên mà rất khó đụng hàng, chẳng hạn "nn.tien"
 
Lần chỉnh sửa cuối:
Upvote 0
Thông thường người ta dùng 1 hàm kết hợp với Name để công thức được gọn gàng, nhưng tác giả không sử dụng hàm và cũng không nêu rỏ mục đích nên tôi cũng không hiểu tác giả cần dùng name để làm gì?

Không phải là tác giả "cần dùng name". Nếu name do tác giả tạo ra thì anh ta sẽ đặt tên khác tên hàm - cũng là "đồ" của anh ta. Đằng này hàm là do anh ta tạo ra còn tập tin do đối tác gửi thì lại có name do đối tác tạo, và do tình cờ trùng với tên hàm nên không dùng được hàm trong công thức.
Tất cả những cái này được viết trong bài #1 mà.
 
Upvote 0
cám ơn các bạn đã giúp đỡ mình, đúng là việc name trùng với hàm cũng là rất hiếm khi xảy ra. mình đang gặp phải 2 vấn đề:
1. Các hàm này mình nghiên cứu viết lại cho ngắn gọn để tiện sử dụng cho các cán bộ văn phòng khác (nếu trùng name như vậy họ sẽ ko hiểu và ko biết cách xử lý)
2. Tên hàm sử dụng nhiều nên mình đặt tên ngắn gọn ví dụ TK (chuẩn hoá tài khoản) hay Ten (chuẩn hoá tên) hay ST (chuẩn hoá số tiền và quy đổi ...) do đó cũng dễ trùng name

Vì mình thấy name trung với các hàm sẵn có của excel thì hàm vẫn dùng bình thường nên mình mới tìm cách làm được điều đó để tránh rủi ro!

Xin chân thành cảm ơn các bạn!

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Upvote 0
cám ơn các bạn đã giúp đỡ mình, đúng là việc name trùng với hàm cũng là rất hiếm khi xảy ra. mình đang gặp phải 2 vấn đề:
1. Các hàm này mình nghiên cứu viết lại cho ngắn gọn để tiện sử dụng cho các cán bộ văn phòng khác (nếu trùng name như vậy họ sẽ ko hiểu và ko biết cách xử lý)
2. Tên hàm sử dụng nhiều nên mình đặt tên ngắn gọn ví dụ TK (chuẩn hoá tài khoản) hay Ten (chuẩn hoá tên) hay ST (chuẩn hoá số tiền và quy đổi ...) do đó cũng dễ trùng name

Vì mình thấy name trung với các hàm sẵn có của excel thì hàm vẫn dùng bình thường nên mình mới tìm cách làm được điều đó để tránh rủi ro!

Xin chân thành cảm ơn các bạn!
Cách của bạn nhapmon ở bài #11 cũng đáng tham khảo đấy chứ nhỉ. Bạn có thể kết hợp cái tên ngắn gọn dễ nhớ (TK, Ten, ST,...) với một tiền tố "khó đụng hàng", chẳng hạn "nntien_", như vậy bạn sẽ có những hàm vừa dễ nhớ vừa "khó đụng hàng" (nntien_TK, nntien_ST,...). Ẹc ẹc...
 
Upvote 0
Web KT
Back
Top Bottom