Cần giải thích tác dụng của các từ đằng sau câu Dic.Add như là Empty, "", k, Item (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

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
Xin chào các Anh chị và các bạn GPE!
Nhờ các Anh chị và các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
Tôi có một đoạn Code về Dictionary như sau:
[GPECODE=vb]Dic.Add rng.Value, Empty
Dic.Add rng.Value, ""
Dic.Add rng.Value, k
Dic.Add Key, Item
[/GPECODE]
4 dòng Code trên là nạp phần tử vào Dictionary. Tôi chưa hiểu tác dụng của từng dòng lệnh trên, cụ thể như là đằng sau câu Dic.Add có từ Empty, "", k, Item.
Mong các Anh chị và các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
 
Xin chào các Anh chị và các bạn GPE!
Nhờ các Anh chị và các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
Tôi có một đoạn Code về Dictionary như sau:
[GPECODE=vb]Dic.Add rng.Value, Empty
Dic.Add rng.Value, ""
Dic.Add rng.Value, k
Dic.Add Key, Item
[/GPECODE]
4 dòng Code trên là nạp phần tử vào Dictionary. Tôi chưa hiểu tác dụng của từng dòng lệnh trên, cụ thể như là đằng sau câu Dic.Add có từ Empty, "", k, Item.
Mong các Anh chị và các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
tôi thấy mấy bài gần đây bạn có áp dụng DIC tầm tầm 10 bài, bạn không hiểu Dic.Add Key, Item... mà áp dụng vào bài, nói thiệt là bạn rất tài
 
Upvote 0
tôi thấy mấy bài gần đây bạn có áp dụng DIC tầm tầm 10 bài, bạn không hiểu Dic.Add Key, Item... mà áp dụng vào bài, nói thiệt là bạn rất tài
Thì câu lệnh có sẵn nên tôi mới áp dụng vô, cũng thấy đúng nhưng chưa hiểu bản chất cho lắm.
 
Upvote 0
Xin chào các Anh chị và các bạn GPE!
Nhờ các Anh chị và các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
Tôi có một đoạn Code về Dictionary như sau:
[GPECODE=vb]Dic.Add rng.Value, Empty
Dic.Add rng.Value, ""
Dic.Add rng.Value, k
Dic.Add Key, Item
[/GPECODE]
4 dòng Code trên là nạp phần tử vào Dictionary. Tôi chưa hiểu tác dụng của từng dòng lệnh trên, cụ thể như là đằng sau câu Dic.Add có từ Empty, "", k, Item.
Mong các Anh chị và các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
Empty = TRỐNG Rỗng
key = chìa khóa chỉ có một
Item = biểu tượng hay hình Ảnh vô số kể
Dic.Add = thiếu thì thêm vô
Value = giá trị
k = thích thì cộng thêm vô

mình học theo kiểu núi Rừng tiền sử giải thích vậy hên thì trúng--=0
 
Upvote 0
Empty = TRỐNG Rỗng
key = chìa khóa chỉ có một
Item = biểu tượng hay hình Ảnh vô số kể
Dic.Add = thiếu thì thêm vô
Value = giá trị
k = thích thì cộng thêm vô

mình học theo kiểu núi Rừng tiền sử giải thích vậy hên thì trúng--=0
giải thích tầm bậy tằm bạ không? bạn nên tìm hiểu lại đi nha
 
Upvote 0
Xin chào các Anh chị và các bạn GPE!
Nhờ các Anh chị và các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
Tôi có một đoạn Code về Dictionary như sau:
[GPECODE=vb]Dic.Add rng.Value, Empty
Dic.Add rng.Value, ""
Dic.Add rng.Value, k
Dic.Add Key, Item
[/GPECODE]
4 dòng Code trên là nạp phần tử vào Dictionary. Tôi chưa hiểu tác dụng của từng dòng lệnh trên, cụ thể như là đằng sau câu Dic.Add có từ Empty, "", k, Item.
Mong các Anh chị và các bạn GPE chỉ giáo!
Trân trọng cảm ơn!

Đầu tiên hết là giở sách VBA ra, học lại xem rng.Value, Empty, "" có nghĩa là gì. Những cái này là căn bản như toán cộng trừ nhân chia. Nếu không biết chúng thì khỏi làm gì tiếp.

Kế đớ là tìm hiểu xem Dic là cái gì.
Sau đó, tìm hiểu xem phương thức Add của nó nhận tham ra sao và làm việc ra sao.

Sau cùng, trên diễn đàn này có tới mấy cái thớt nói về Dictionary, từ căn bản đến cao, có cả những cái so sánh nó với các đối tượng gần giống (vd như Collection). Tại sao không chịu khó tìm hiểu.
 
Upvote 0
Thì câu lệnh có sẵn nên tôi mới áp dụng vô, cũng thấy đúng nhưng chưa hiểu bản chất cho lắm.
Tôi nghĩ bạn nên tìm hiểu cái gì thì nên làm rõ cái đó, làm vài lần như vậy tự nhiên những cái khác sẽ tự động sẽ ra. nói chung là những cái gì mình cần cho công việc thì bao nhiêu code bạn làm là đủ rồi, quang trọng là cái tư duy của bạn như thế nào thôi, học code mà không có tư duy thì bỏ đi, không có thuật toán thì làm sao giải quyết vấn đề
 
Upvote 0
Đầu tiên hết là giở sách VBA ra, học lại xem rng.Value, Empty, "" có nghĩa là gì. Những cái này là căn bản như toán cộng trừ nhân chia. Nếu không biết chúng thì khỏi làm gì tiếp.

Kế đớ là tìm hiểu xem Dic là cái gì.
Sau đó, tìm hiểu xem phương thức Add của nó nhận tham ra sao và làm việc ra sao.


Sau cùng, trên diễn đàn này có tới mấy cái thớt nói về Dictionary, từ căn bản đến cao, có cả những cái so sánh nó với các đối tượng gần giống (vd như Collection). Tại sao không chịu khó tìm hiểu.
Thực ra, em với bạn ý cùng đều người mới học thật, mấy hôm định trao đổi chút với bạn ý nhưng ngại. Bài viết của hung2412 nhiều lúc mâu thuẫn trong việc đặt tiêu đề, cách giải bài và cách hỏi nữa. Lại xuất hiện với tần suất khủng nên nhiều lúc làm mọi người thế nào ý. Dễ hiểu nhầm.....
 
Upvote 0
Nói thiệt là mình cốc có hiểu chi tiết về Dictionary nhưng dám mạnh dạn nói rằng mình viết code sử dụng Dictionary thuộc dạng thần sầu quỷ khóc ma chê quỷ hờn.
Chẳng cần hiểu làm khỉ gì, viết riết tự nhiên biết. Mình nhớ dictionary chỉ cần bỏ ra 1 ngày nghiên cứu thì biết sạch sẽ. Vì vốn dictionary nó chỉ là cái kho, cái kho có 1 cái kệ, cái kệ có 2 tầng. Mỗi tầng có nhiều ngăn chứa đựng hàng hóa. Muốn đem đồ vô kho bỏ vào tầng Key thì chỉ được bỏ vô 1 lần, lần thứ 2 không bỏ vào được nữa..... đại loại như thế.
 
Upvote 0
Chung quy lại là:
- Đã tìm hiểu khắp diễn đàn chưa mà hỏi?
=> Xin thưa là: Đã tìm và đọc nhưng mà rối như tơ vò.
- Dễ vậy mà cũng hỏi là sao?
=> Xin thưa là: Không biết thì phải hỏi, muốn giỏi thì phải học.
- Lôi hết sách vở ra mà xem đi.
=> Xin thưa là: VBA mênh mông như Đại dương, không biết đâu là bến bờ.
- Xem lại lý thuyết nọ, lý thuyết kia đi:
=> Xin thưa là: Đã xem nhưng lý thuyết nọ, lý thuyết kia đứng về từng lĩnh vực thì nó khác nhau.
...
 
Upvote 0
To
phihndhsp
bạn VetMini nói không sai và mình giải thích cũng không trật chỗ nào cả tại câu từ mình viết nửa nửa thật nửa giả bạn nghĩ sai thôi
phương thức Dic
1/ key là duy nhất ...VD như tên hàng lọc ra một tên duy nhất
2/ Item là vố số bất kỳ ...VD như số lượng
3/ k nếu bạn tạo thêm biến k =k+1 thì có phải thích thì cộng thêm vào không
4/ value là giá trị không lẻ sai
5/ Dic.Add nếu chưa có thì thêm vào không lẻ sai
6/ Empty = trống rỗng sai không
vậy sai chỗ nào bạn
 
Upvote 0
Tôi xem rồi bạn ạ. Tuy nhiên, chỗ khúc mắc của tôi vẫn chưa thể hiểu nổi (Trình độ của tôi dốt lắm).
Từ từ đi học rồi biết hết đừng nóng vội. học code phải có một quá trình từ 1+1=2 đi lên thì mới có nên tảng căn bản chứ đừng học nhồi nhét quá nhiều tảu hỏa nhập ma đó....
mình khuyên thật lòng đó
 
Upvote 0
Từ từ đi học rồi biết hết đừng nóng vội. học code phải có một quá trình từ 1+1=2 đi lên thì mới có nên tảng căn bản chứ đừng học nhồi nhét quá nhiều tảu hỏa nhập ma đó....
mình khuyên thật lòng đó
Thì tôi vẫn từ từ mà học đó. Nhưng chỗ khúc mắc thì nên hỏi nếu không thì thấy không được yên tâm cho lắm.
 
Upvote 0
Câu hỏi của bạn là:
Xin chào các Anh chị và các bạn GPE!
Nhờ các Anh chị và các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
Tôi có một đoạn Code về Dictionary như sau:
[GPECODE=vb]Dic.Add rng.Value, Empty
Dic.Add rng.Value, ""
Dic.Add rng.Value, k
Dic.Add Key, Item
[/GPECODE]
4 dòng Code trên là nạp phần tử vào Dictionary. Tôi chưa hiểu tác dụng của từng dòng lệnh trên, cụ thể như là đằng sau câu Dic.Add có từ Empty, "", k, Item.
Mong các Anh chị và các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
Trong topic có nói
2/ Các phương thức và thuộc tính:a. Các phương thức:

- Phương thức Add: Phương thức Add dùng để thêm item vào Dictionary.
PHP Code:
MyDictionary.Add Key, Item


Item có nhận dữ liệu thuộc bất kì kiểu dữ liệu gì. Key cũng nhận như item nhưng ngoại trừ kiểu dữ liệu mảng (array). Key phải là duy nhất, nếu bạn thêm item với cùng một key, bạn sẽ gặp lỗi.
....................

Tôi xem các bài của bạn thấy bạn đã biết k là gì, "" là gì... không hiểu là với cách giải thích kia thì bạn không hiểu gì?

Tôi thì rất dị ứng với câu "tôi dốt", "tôi gà"........bởi không ai tự dưng mà giỏi cả, phải tự tin vào mình thì mới làm được.
 
Upvote 0
Nôm na là như thế này:

Dictionary là ta tạo ra 1 cuốn từ điển;
Như thông thường từ điển 2 thứ tiếng; Để tra 1 từ của tiếng nước này sang tiếng nước khác, ta cần có 2 cột từ

1 cột gồm toàn các từ ngoại quốc mà ta cần học & 1 cột là từ tiếng đẻ; Có thể có nhiều từ tiếng mẹ đẻ giải nghĩa cho 1 tử ngoại quốc

(Nói cách khác, từ ngoại quốc không bao giờ được diễn dịch sang tiếng mẹ để là 1<=> 1, mà là 1<=>n) & chú í rằng không có n<=>1 trong từ điển

Nếu khưa thỏa thì mời bạn đọc tiếp các bài lí thuyết ; Nếu thấy trừu tượng quá thì lấy những ví dụ có trên GPE.COM đã làm cho các bạn khác từ đơn giản đến fức tạp mà cày;

Tự học thì fải mất thời gian thôi!
Cái bạn đang cần chắc là fương fáp tự học, chứ chưa chắc fải là cái mớ bồng bông kia!
 
Upvote 0
To
bạn VetMini nói không sai và mình giải thích cũng không trật chỗ nào cả tại câu từ mình viết nửa nửa thật nửa giả bạn nghĩ sai thôi
phương thức Dic
1/ key là duy nhất ...VD như tên hàng lọc ra một tên duy nhất
2/ Item là vố số bất kỳ ...VD như số lượng
3/ k nếu bạn tạo thêm biến k =k+1 thì có phải thích thì cộng thêm vào không
4/ value là giá trị không lẻ sai
5/ Dic.Add nếu chưa có thì thêm vào không lẻ sai
6/ Empty = trống rỗng sai không
vậy sai chỗ nào bạn
Nếu tôi giải thích thì tôi sẽ giải thích đơn giản như thế này
gần giống như của anh Hải
Presentation1.gif
 
Upvote 0
Nếu tôi giải thích thì tôi sẽ giải thích đơn giản như thế này
gần giống như của anh Hải
View attachment 136213
Xúc tích ngắn gọn một câu
Phương Thức Dic
1/ Key là duy nhất chỉ một
2/ Item là vô số
Bạn hơi ẩu chưa gì chụp ngay cho mình giải thích bậy là sai
Thôi mọi việc không nhắc lại nữa nha
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Cách giải thích của bạn bằng hình rất hay. Hình như có nhầm lẫn hay sao ấy. Với 10, 20, 30 là giá trị và A, B, C là key thì phải là:
[GPECODE=vb]Dic.Add 10, A
Dic.Add 20, B
Dic.Add 30, C
[/GPECODE]
Như anh Phi là đúng bạn nhé, nếu viết như bạn thì 10,20, là keys, còn A, B, C là item
Dic.Add key, item
 
Upvote 0
Viết kiểu này cho chủ thớt tẩu hỏa luôn
PHP:
Sub DicObject()
Dim i As Long
With CreateObject("scripting.dictionary")
   For i = 1 To 100000
      .Item(i) = i
   Next
End With
End Sub
Hoặc
PHP:
Sub DicObJect()
Dim Dic As Object, i As Long
Set Dic = CreateObject("scripting.dictionary")
For i = 1 To 100000
   Dic(i) = i
Next
End Sub
Hoặc
PHP:
Sub DicObJect()
Dim Dic As Object, i As Long
Set Dic = CreateObject("scripting.dictionary")
For i = 1 To 100000
   Dic.Add i, i
Next
End Sub
Hoặc
PHP:
Sub DicObJect()
Dim Dic As Object, i As Long
Set Dic = CreateObject("scripting.dictionary")
For i = 1 To 100000
   Dic.Item(i)= i
Next
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Xin chào các Anh chị và các bạn GPE!
Nhờ các Anh chị và các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
Tôi có một đoạn Code về Dictionary như sau:
[GPECODE=vb]Dic.Add rng.Value, Empty
Dic.Add rng.Value, ""
Dic.Add rng.Value, k
Dic.Add Key, Item
[/GPECODE]
4 dòng Code trên là nạp phần tử vào Dictionary. Tôi chưa hiểu tác dụng của từng dòng lệnh trên, cụ thể như là đằng sau câu Dic.Add có từ Empty, "", k, Item.
Mong các Anh chị và các bạn GPE chỉ giáo!
Trân trọng cảm ơn!

Với Dictionary, có kết cấu như sau:

Dic.Add Key, Item

Key: Phải là dạng chuỗi và duy nhất (không trùng)

Item: Kiểu dữ liệu gì cũng được, kể cả là một mảng.

Nếu ta chỉ quan tâm đến Key để lọc duy nhất thì không cần thiết phải có Item, nhưng do cấu trúc của nó bắt buộc phải có nên ta có thể thêm "" hoặc Empty (tôi thích Empty hơn bởi nó chả có gì nên nó "chứa dung lượng" nhẹ hơn, tôi nghĩ thế).
 
Upvote 0
Tui nói thiệt hé.
Nick này có những bài trả lời về code, về các chuyên đề khác rất "sung", nhưng đôi khi lại hỏi một số vấn đề liên quan cũng như vậy lại rất "lạ", giống như có 2 người sử dụng 1 nick name.
Mỗi lần đọc bài hỏi của nick này (kể cả bài trả lời) tôi luôn bị "dị ứng".
Nếu tôi có "sốc thuốc" thì xin lỗi nick hung2412 nhé.
 
Lần chỉnh sửa cuối:
Upvote 0
giải thích tầm bậy tằm bạ không? bạn nên tìm hiểu lại đi nha

Một GV nói với HS
- Em nói vậy chưa đúng, thế nầy mới đúng nè....
HS: Em cảm ơn thầy ạ!
Một GV nói với HS
- Em nói bậy bạ không hà. Về nhà hỏi mẹ lại đi...
Nếu là tôi: thì tôi sẽ nói lại là "Mẹ em nói là thầy đã tầm bậy ..."
 
Lần chỉnh sửa cuối:
Upvote 0
ngại bạn hung2412 quá viết Dic rầm rầm xong quay lại hỏi kiến thức về Dic 1+1=2
 
Upvote 0
Cách giải thích của bạn bằng hình rất hay. Hình như có nhầm lẫn hay sao ấy. Với 10, 20, 30 là giá trị và A, B, C là key thì phải là:
[GPECODE=vb]Dic.Add 10, A
Dic.Add 20, B
Dic.Add 30, C
[/GPECODE]

Ró ràng là bạn cứ hỏi tới mà chả chịu suy nghĩ. Câu trên chứng tỏ rằng bạn không hề chịu khó đọc qua cách nhận tham của phương thức Add.

Tài liệu người ta viết sẵn không chịu đọc mà cứ luôn mồm tại này tại nọ. Cơm canh đã nấu nhưng bạn còn muốn người ta đút cho ăn.

...

Kế đớ là tìm hiểu xem Dic là cái gì.
Sau đó, tìm hiểu xem phương thức Add của nó nhận tham ra sao và làm việc ra sao.
...

Cho đến giờ này, tôi bắt đầu tin rằng bạn học không có căn bản.

Tôi đã nói rằng bạn tham học theo đường lối cấp tốc nên bị nghẹn.

Khôg có ai viết code được mà không có căn bản. Để sử dụng được một Object có sẵn (Dictionary là một Object có sẵn trong thư viện của cỗ máy Script), bạn phải biết thế nào là một cấu trúc của Object.

Bạn không nên tin lời những người nói rằng "chẳng biết A với B là gì, chỉ code ào ào". Những người này, bạn chỉ cần chỉ trích một điểm nào trong code của họ sẽ thấy họ trổ kiến thức ra cho xem.

Có thể người ta tuyên bố không biết gì về đại số, định nghĩa số âm số dương. Có thể người ta chối cãi mình không biết gì về định nghĩa -a là số đối của a qua phép toán cộng và con số trung tính là 0 (*). Nhưng chắc chắn là người ta hiểu -a có nghĩa là đem -1 nhân cho a.

(*) tính chất đại số: trong tập hợp, có một và chỉ một b sao cho a + b = 0; và b được ký hiệu là -a
 
Upvote 0
Đường nào cũng về La Mã, có những đường đi khá nhanh, có những đường ngoằn ngoèo. Tuy nhiên có những đường đi mãi không bao giờ tới.
Muốn ngoằn ngoèo thì cứ tìm các bài của mình mà đọc.
 
Upvote 0
Xin chào các Anh chị và các bạn GPE!
Nhờ các Anh chị và các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
Tôi có một đoạn Code về Dictionary như sau:
[GPECODE=vb]Dic.Add rng.Value, Empty
Dic.Add rng.Value, ""
Dic.Add rng.Value, k
Dic.Add Key, Item
[/GPECODE]
4 dòng Code trên là nạp phần tử vào Dictionary. Tôi chưa hiểu tác dụng của từng dòng lệnh trên, cụ thể như là đằng sau câu Dic.Add có từ Empty, "", k, Item.
Mong các Anh chị và các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
- Ở đây Dic.Add rng.Value, Empty giống với Dic.Add rng.Value, "" (Empty với "" đều là không đặt tên cho Key)
- Còn Dic.Add rng.Value, k thì k ở đây là Key. Nếu có k=k+1 thì sẽ lần lượt lấy số thứ tự của k làm key cho từng giá trị của rng.Value.
- Còn Dic.Add Key, Item => Chưa rõ. Mong có ai chỉ giùm với ạ.
 
Upvote 0
Chắc là xin kíu từ đây. Không ngứa ngáy tay chân nữa, tôi khuyên bạn là không nên học từ ngọn như vậy, nếu bạn muốn tìm hiểu về DIC thì bạn phải biết tìm hiểu cách sử dụng cái đã, rồi từ từ mới tới cái khác, ở đây bạn chả thèm động não và suy nghĩ gì cả. bó tay
Ở trên diễn đàn này người ta lợi dụng DIC để tìm ra duy nhất nên hầu như mọi người chỉ quan tấm tới cái khóa, mà không quan tâm tới giá trị
 
Lần chỉnh sửa cuối:
Upvote 0
- Ở đây Dic.Add rng.Value, Empty giống với Dic.Add rng.Value, "" (Empty với "" đều là không đặt tên cho Key)
- Còn Dic.Add rng.Value, k thì k ở đây là Key. Nếu có k=k+1 thì sẽ lần lượt lấy số thứ tự của k làm key cho từng giá trị của rng.Value.
- Còn Dic.Add Key, Item => Chưa rõ. Mong có ai chỉ giùm với ạ.
BẠN hiểu theo kiểu CurrenRegion thế mà cũng Viết Dic Rầm Rầm... Mới Siêu VBA
 
Upvote 0
- Ở đây Dic.Add rng.Value, Empty giống với Dic.Add rng.Value, "" (Empty với "" đều là không đặt tên cho Key)
- Còn Dic.Add rng.Value, k thì k ở đây là Key. Nếu có k=k+1 thì sẽ lần lượt lấy số thứ tự của k làm key cho từng giá trị của rng.Value.
- Còn Dic.Add Key, Item => Chưa rõ. Mong có ai chỉ giùm với ạ.

2 câu đầu sai. Đã vào dictionary thì phải có key, không thể nối chuyện "không đặt tên". Bạn hoàn toàn hiểu lệch lạc về nhiệm vụ của dictionary và ý nghĩa của cặp trị key-item. Cũng tương tự như nói chuyện về phân số mà bạn không hiểu tử số và mẫu số là gì vậy.

Câu thứ 3 vì vậy không thể giải thích cho bạn được. Đã 2 lần nhắc nhở là phải học lại phương thức add nó làm việc như thế nào mà bạn nhất định làm ngơ.

Tôi giải thích ở đây là vì các thành viên khác cần học hỏi, chứ bạn thì tôi biết đã chủ định không muốn học lý thuyết rồi. Thớt này của bạn, nhưng GPE là nơi học hỏi chung. Các thành viên khác ghé vào đây có thể cần học.

Dictionary là một tập hợp. Mỗi phần tử trong tập hợp này là một item (tiếng Anh, item có thể hiểu là phần tử). Mỗi item chứa trong tập hợp phải dùng một cái tên để phân biệt. Nếu ta ví dictionary như một folder trong Windows thì mỗi item là một file; mỗi file có một tên file và số dữ liệu chứa trong file. Trong Dictionary, cái tên của mỗi phần tử được gọi là key, cái chứa trong mối phần tử được gọi là item. Và cũng giống như file, item có thể chứa bất cứ cái gì.

Trong Windows có nhiều cách add file; trong explorer có cách add new file trực tiếp. Dictionary cũng có cách add item trực tiếp, đó là dùng phương thức Add (*).

Phương thức Add của Dictionary bắt buộc nhận 2 tham số (chú ý tôi dùng từ bắt buộc, có nghĩa là không có cái nào optional/mặc định cả). Tham thứ nhất là khoá (key) và tham thứ hai là trị (item). (Xin chú ý từ thứ nhất và thứ hai, có nghĩa là cái đi trước và cái đi sau, không thể lẫn lộn). Và cũng tương tự như ta có thể add file rỗng vào folder, với dictionary, ta có thể add item rỗng.

Lưu ý về việc tôi đưa folder và files ra để ví với Dictionary. Bên trong 1 folder, tên của file phải là duy nhất, cũng giống như keys trong 1 dictionary không thể trùng. Cái đuôi (extension) của file hiểu theo chiều hướng này chỉ là một phần của tên file. Tuy rằng cái đuôi còn có công dụng khác. Công dụng đó chỉ là một điều lệ chung của hệ thống, dùng để dễ dàng phân biệt loại file và đặt mặc định cách xem dữ liệu (hoặc vận hành) file. Không có cái đuôi, file vẫn là file.

(*) chú thích: Add chỉ là cách căn bản để đưa item vào dictionary chứ không phải là cách duy nhất. Nếu các bạn theo dõi code, sẽ thấy có một vài người viết code dùng cách mặc định (tự động add). Tuy tác giả vẫn tuyên bố rằng mình chả biết gì hết, nhưng tôi chắc chắn là người "không biết gì" không thể nào hiểu cách mặc định như thế. Trên đời không có chuyện phi công lái máy bay không biết gì về chiếc máy bay. Có thể người phi công không biết gì về máy móc, nhưng căn bản tại sao chiếc máy bay cất cánh được thì anh hay cô ta phải biết.
 
Lần chỉnh sửa cuối:
Upvote 0
Chắc là xin kíu từ đây. Không ngứa ngáy tay chân nữa, tôi khuyên bạn là không nên học từ ngọn như vậy, nếu bạn muốn tìm hiểu về DIC thì bạn phải biết tìm hiểu cách sử dụng cái đã, rồi từ từ mới tới cái khác, ở đây bạn chả thèm động não và suy nghĩ gì cả. bó tay
Ở trên diễn đàn này người ta lợi dụng DIC để tìm ra duy nhất nên hầu như mọi người chỉ quan tấm tới cái khóa, mà không quan tâm tới giá trị

Hi, lại 1 nhầm lẫn nữa. Nếu chỉ lấy danh sách duy nhất thì mình thấy Dic chưa hẳn đã hay nhất cho 1 số trường hợp. Bạn nói là không quan tâm đến Items của Dic là bỏ qua 1 công dụng lớn của Dic rồi. Ví dụ: Tao danh sách nhiều cột, Tổng hợp dữ liệu theo danh sách v.v...

@ to Hung 2412:
Để sử dụng GPE học tập bạn nên có phương pháp mới được, chứ kiểu "dắt tay" thế này khó đi xa được. Để nghiên cứu về Dic ngoài GPE bạn nên tận dụng tài nguyên Internet để tham khảo đã. Các nội dung sau bạn tham khảo tốt sẽ cho bạn khả năng vận dụng tốt Dic trong nhiều trường hợp. Các nội dung chính cần tham khảo:

1/Các cách tạo ra Dic trong môi trương VBA.
2/Xác định loại: Dic là loại Object (Đối tượng). Vậy để nghiên cứu về Dic bạn nghiên cứu về nó theo các nội dung theo đối tượng
+Các thuộc tính (properties)
+Các phương thức (Methods)
+Các sự kiện hỗ trợ (Events)

Chỉ bấy nhiêu thôi cũng đủ cho bạn điều khiển Dic theo ý muốn.
 
Upvote 0
Hi, lại 1 nhầm lẫn nữa. Nếu chỉ lấy danh sách duy nhất thì mình thấy Dic chưa hẳn đã hay nhất cho 1 số trường hợp. Bạn nói là không quan tâm đến Items của Dic là bỏ qua 1 công dụng lớn của Dic rồi. Ví dụ: Tao danh sách nhiều cột, Tổng hợp dữ liệu theo danh sách v.v...
cái này tôi biết và cũng thường sử dụng, dùng items để tính tồng hoặc đếm danh sách
 
Upvote 0
Hi, lại 1 nhầm lẫn nữa. Nếu chỉ lấy danh sách duy nhất thì mình thấy Dic chưa hẳn đã hay nhất cho 1 số trường hợp. Bạn nói là không quan tâm đến Items của Dic là bỏ qua 1 công dụng lớn của Dic rồi. Ví dụ: Tao danh sách nhiều cột, Tổng hợp dữ liệu theo danh sách v.v...
...

Tôi cũng không hiểu tại sao bạn này (nhân vật mà bạn nói) lại không muốn sử dụng công cụ của run time script (scrrun.dll) như vậy.
Ký tự A trong VBA có nghĩa là "Application". Đã Application thì cứ cái gì nằm đó thì xài. Run Time Scirpt nó nằm trong Windows chứ có phải thêm thắt gì đâu mà sợ.

Bạn này cũng có nói là mình từng dùng C/C++. Chả lẽ trong C++, bạn từ chối không xài STL?

...
@ to Hung 2412:
Để sử dụng GPE học tập bạn nên có phương pháp mới được, chứ kiểu "dắt tay" thế này khó đi xa được....

Hình như bạn này (nhân vật mà bạn nói) đã có định kiến rằng kiểu "dắt tay" là hữu hiệu nhất để học.
 
Lần chỉnh sửa cuối:
Upvote 0
Hôm trước mình viết cho bạn một code dic xúc tích ngắn gọn hôm nay cũng vây ta đổi kiểu một tí bạn từ từ nghiên cứu nha....một kiểu .Add và một kiểu khỏi .Add ,, If Not .Exists gì hết Vọc diết sẽ ngộ ra một điều nếu sai viết lại ....
code hôm trước chỉ lấy Key
PHP:
Sub Dic_Key()
Dim It, Arr()
Arr = [A3:A100].Value
With CreateObject("Scripting.Dictionary")
    For Each It In Arr
         If It <> "" Then .Item(It) = ""
    Next
    [D3].Resize(.Count) = Application.Transpose(.keys)
End With
End Sub

Đổi kiểu Mới cũng chỉ lấy Key

PHP:
Sub Dic_Key2()
Dim Arr(), i&
Arr = Range("A3:A100").Value
With CreateObject("Scripting.Dictionary")
     For i = 1 To UBound(Arr, 1)
       .Item(Arr(i, 1)) = .Item(Arr(i, 1))
     Next
     [D3].Resize(.Count) = Application.Transpose(.keys)
End With
End Sub

Kiểu thấy mọi người thường hay viết .Add...
Kiểu lấy Key Và Item
PHP:
Sub DicKey_Item()
Dim nguon(), kq(), i&, k&
nguon = [A3:B200].Value
ReDim kq(1 To UBound(nguon, 1), 1 To UBound(nguon, 2))
With CreateObject("scripting.dictionary")
    For i = 1 To UBound(nguon)
        If Not .Exists(nguon(i, 1)) Then
            k = k + 1
            .Add nguon(i, 1), k
            kq(k, 1) = nguon(i, 1)
            kq(k, 2) = nguon(i, 2)
        End If
    Next
    [F3].Resize(k, 2) = kq
End With
End Sub
Chúc thành công
 
Lần chỉnh sửa cuối:
Upvote 0
Công nhận là Dictionary rất lợi hại. Giải quyết được khối việc. Không phải mở thêm cột phụ.
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom