Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I checked many posts about the Scripting.Dictionary and still cannot figure
out what the two parameters are, the key and a description or an item and a key or what? Then what is an item (or the description) and what can it be used for? If I have a description for each key, can I store it alongside the key and use it later after I found its corresponding key? My problem is as follows: I have a text file with 114000 lines. On each line, there is a contract number and a 3 character field (a code) that I must use to determine the template to use. Can I use the dictionary to solve my problem or not? The Add method is generally used in this manner: Dic.Add CStr(Item), Item or Dic.Add sh.Name, CStr(sh.Name) Could I use Dic.Add strContract, strCode If yes, then how do I search and display a specific contract number and its corresponding code? If no, should I use a Dictionary and a dynamic array instead? Thanks -- Jac Tremblay |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
The example in MSDN seems to show it well
Dim d ' Create a variable. Set d = CreateObject("Scripting.Dictionary") d.Add "a", "Athens" ' Add some keys and items. d.Add "b", "Belgrade" d.Add "c", "Cairo" Check if it exists If d.Exists("c") Then msg = "Specified key exists." Else msg = "Specified key doesn't exist." End If Use items a = d.Items ' Get the items. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Create return string. Next Use keys a = d.Keys ' Get the keys. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Return results. Next -- HTH RP (remove nothere from the email address if mailing direct) "Jac Tremblay" wrote in message ... I checked many posts about the Scripting.Dictionary and still cannot figure out what the two parameters are, the key and a description or an item and a key or what? Then what is an item (or the description) and what can it be used for? If I have a description for each key, can I store it alongside the key and use it later after I found its corresponding key? My problem is as follows: I have a text file with 114000 lines. On each line, there is a contract number and a 3 character field (a code) that I must use to determine the template to use. Can I use the dictionary to solve my problem or not? The Add method is generally used in this manner: Dic.Add CStr(Item), Item or Dic.Add sh.Name, CStr(sh.Name) Could I use Dic.Add strContract, strCode If yes, then how do I search and display a specific contract number and its corresponding code? If no, should I use a Dictionary and a dynamic array instead? Thanks -- Jac Tremblay |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
so
Dic.Add CStr(contract_number), template_code if you will look up using the contract number to get the template code. -- Regards, Tom Ogilvy "Bob Phillips" wrote in message ... The example in MSDN seems to show it well Dim d ' Create a variable. Set d = CreateObject("Scripting.Dictionary") d.Add "a", "Athens" ' Add some keys and items. d.Add "b", "Belgrade" d.Add "c", "Cairo" Check if it exists If d.Exists("c") Then msg = "Specified key exists." Else msg = "Specified key doesn't exist." End If Use items a = d.Items ' Get the items. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Create return string. Next Use keys a = d.Keys ' Get the keys. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Return results. Next -- HTH RP (remove nothere from the email address if mailing direct) "Jac Tremblay" wrote in message ... I checked many posts about the Scripting.Dictionary and still cannot figure out what the two parameters are, the key and a description or an item and a key or what? Then what is an item (or the description) and what can it be used for? If I have a description for each key, can I store it alongside the key and use it later after I found its corresponding key? My problem is as follows: I have a text file with 114000 lines. On each line, there is a contract number and a 3 character field (a code) that I must use to determine the template to use. Can I use the dictionary to solve my problem or not? The Add method is generally used in this manner: Dic.Add CStr(Item), Item or Dic.Add sh.Name, CStr(sh.Name) Could I use Dic.Add strContract, strCode If yes, then how do I search and display a specific contract number and its corresponding code? If no, should I use a Dictionary and a dynamic array instead? Thanks -- Jac Tremblay |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Tom,
Why do you convert to string the contract number and not the template code (or both)? Thanks for your reply. "Tom Ogilvy" wrote: so Dic.Add CStr(contract_number), template_code if you will look up using the contract number to get the template code. -- Regards, Tom Ogilvy "Bob Phillips" wrote in message ... The example in MSDN seems to show it well Dim d ' Create a variable. Set d = CreateObject("Scripting.Dictionary") d.Add "a", "Athens" ' Add some keys and items. d.Add "b", "Belgrade" d.Add "c", "Cairo" Check if it exists If d.Exists("c") Then msg = "Specified key exists." Else msg = "Specified key doesn't exist." End If Use items a = d.Items ' Get the items. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Create return string. Next Use keys a = d.Keys ' Get the keys. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Return results. Next -- HTH RP (remove nothere from the email address if mailing direct) "Jac Tremblay" wrote in message ... I checked many posts about the Scripting.Dictionary and still cannot figure out what the two parameters are, the key and a description or an item and a key or what? Then what is an item (or the description) and what can it be used for? If I have a description for each key, can I store it alongside the key and use it later after I found its corresponding key? My problem is as follows: I have a text file with 114000 lines. On each line, there is a contract number and a 3 character field (a code) that I must use to determine the template to use. Can I use the dictionary to solve my problem or not? The Add method is generally used in this manner: Dic.Add CStr(Item), Item or Dic.Add sh.Name, CStr(sh.Name) Could I use Dic.Add strContract, strCode If yes, then how do I search and display a specific contract number and its corresponding code? If no, should I use a Dictionary and a dynamic array instead? Thanks -- Jac Tremblay |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
out of habit from using collections. You can use a number
Sub AB() Set d = CreateObject("Scripting.Dictionary") d.Add 12, "Athens" ' Add some keys and items. d.Add 18, "Belgrade" d.Add 32, "Cairo" Debug.Print d.Item(32) End Sub Will Return Cairo -- Regards, Tom Ogilvy "Jac Tremblay" wrote in message ... Hi Tom, Why do you convert to string the contract number and not the template code (or both)? Thanks for your reply. "Tom Ogilvy" wrote: so Dic.Add CStr(contract_number), template_code if you will look up using the contract number to get the template code. -- Regards, Tom Ogilvy "Bob Phillips" wrote in message ... The example in MSDN seems to show it well Dim d ' Create a variable. Set d = CreateObject("Scripting.Dictionary") d.Add "a", "Athens" ' Add some keys and items. d.Add "b", "Belgrade" d.Add "c", "Cairo" Check if it exists If d.Exists("c") Then msg = "Specified key exists." Else msg = "Specified key doesn't exist." End If Use items a = d.Items ' Get the items. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Create return string. Next Use keys a = d.Keys ' Get the keys. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Return results. Next -- HTH RP (remove nothere from the email address if mailing direct) "Jac Tremblay" wrote in message ... I checked many posts about the Scripting.Dictionary and still cannot figure out what the two parameters are, the key and a description or an item and a key or what? Then what is an item (or the description) and what can it be used for? If I have a description for each key, can I store it alongside the key and use it later after I found its corresponding key? My problem is as follows: I have a text file with 114000 lines. On each line, there is a contract number and a 3 character field (a code) that I must use to determine the template to use. Can I use the dictionary to solve my problem or not? The Add method is generally used in this manner: Dic.Add CStr(Item), Item or Dic.Add sh.Name, CStr(sh.Name) Could I use Dic.Add strContract, strCode If yes, then how do I search and display a specific contract number and its corresponding code? If no, should I use a Dictionary and a dynamic array instead? Thanks -- Jac Tremblay |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Bob,
Your reply is quite helpful. I had only checked the F1 key and could not get any help on the Scripting.Dictionary; only the Word Dictionary. Next time, I will look in MSDN first. Now that I know I can use the dictionary for my case, I have one more question. When I check if a specific key exists, then do I absolutely have to iterate through the items to find out its index (0 to .count - 1)? Thank you for your comment. "Bob Phillips" wrote: The example in MSDN seems to show it well Dim d ' Create a variable. Set d = CreateObject("Scripting.Dictionary") d.Add "a", "Athens" ' Add some keys and items. d.Add "b", "Belgrade" d.Add "c", "Cairo" Check if it exists If d.Exists("c") Then msg = "Specified key exists." Else msg = "Specified key doesn't exist." End If Use items a = d.Items ' Get the items. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Create return string. Next Use keys a = d.Keys ' Get the keys. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Return results. Next -- HTH RP (remove nothere from the email address if mailing direct) "Jac Tremblay" wrote in message ... I checked many posts about the Scripting.Dictionary and still cannot figure out what the two parameters are, the key and a description or an item and a key or what? Then what is an item (or the description) and what can it be used for? If I have a description for each key, can I store it alongside the key and use it later after I found its corresponding key? My problem is as follows: I have a text file with 114000 lines. On each line, there is a contract number and a 3 character field (a code) that I must use to determine the template to use. Can I use the dictionary to solve my problem or not? The Add method is generally used in this manner: Dic.Add CStr(Item), Item or Dic.Add sh.Name, CStr(sh.Name) Could I use Dic.Add strContract, strCode If yes, then how do I search and display a specific contract number and its corresponding code? If no, should I use a Dictionary and a dynamic array instead? Thanks -- Jac Tremblay |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Jac,
Yes I guess so, but why would you need the index, the Dictionary object is not index based. If you want the value, try If d.Exists("c") Then MsgBox d.Item("c") End If -- HTH RP (remove nothere from the email address if mailing direct) "Jac Tremblay" wrote in message ... Hi Bob, Your reply is quite helpful. I had only checked the F1 key and could not get any help on the Scripting.Dictionary; only the Word Dictionary. Next time, I will look in MSDN first. Now that I know I can use the dictionary for my case, I have one more question. When I check if a specific key exists, then do I absolutely have to iterate through the items to find out its index (0 to .count - 1)? Thank you for your comment. "Bob Phillips" wrote: The example in MSDN seems to show it well Dim d ' Create a variable. Set d = CreateObject("Scripting.Dictionary") d.Add "a", "Athens" ' Add some keys and items. d.Add "b", "Belgrade" d.Add "c", "Cairo" Check if it exists If d.Exists("c") Then msg = "Specified key exists." Else msg = "Specified key doesn't exist." End If Use items a = d.Items ' Get the items. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Create return string. Next Use keys a = d.Keys ' Get the keys. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Return results. Next -- HTH RP (remove nothere from the email address if mailing direct) "Jac Tremblay" wrote in message ... I checked many posts about the Scripting.Dictionary and still cannot figure out what the two parameters are, the key and a description or an item and a key or what? Then what is an item (or the description) and what can it be used for? If I have a description for each key, can I store it alongside the key and use it later after I found its corresponding key? My problem is as follows: I have a text file with 114000 lines. On each line, there is a contract number and a 3 character field (a code) that I must use to determine the template to use. Can I use the dictionary to solve my problem or not? The Add method is generally used in this manner: Dic.Add CStr(Item), Item or Dic.Add sh.Name, CStr(sh.Name) Could I use Dic.Add strContract, strCode If yes, then how do I search and display a specific contract number and its corresponding code? If no, should I use a Dictionary and a dynamic array instead? Thanks -- Jac Tremblay |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi again Bob,
The reason is that I need the corresponding template code to determine which template to use for a particular contract number. "Bob Phillips" wrote: Hi Jac, Yes I guess so, but why would you need the index, the Dictionary object is not index based. If you want the value, try If d.Exists("c") Then MsgBox d.Item("c") End If -- HTH RP (remove nothere from the email address if mailing direct) "Jac Tremblay" wrote in message ... Hi Bob, Your reply is quite helpful. I had only checked the F1 key and could not get any help on the Scripting.Dictionary; only the Word Dictionary. Next time, I will look in MSDN first. Now that I know I can use the dictionary for my case, I have one more question. When I check if a specific key exists, then do I absolutely have to iterate through the items to find out its index (0 to .count - 1)? Thank you for your comment. "Bob Phillips" wrote: The example in MSDN seems to show it well Dim d ' Create a variable. Set d = CreateObject("Scripting.Dictionary") d.Add "a", "Athens" ' Add some keys and items. d.Add "b", "Belgrade" d.Add "c", "Cairo" Check if it exists If d.Exists("c") Then msg = "Specified key exists." Else msg = "Specified key doesn't exist." End If Use items a = d.Items ' Get the items. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Create return string. Next Use keys a = d.Keys ' Get the keys. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Return results. Next -- HTH RP (remove nothere from the email address if mailing direct) "Jac Tremblay" wrote in message ... I checked many posts about the Scripting.Dictionary and still cannot figure out what the two parameters are, the key and a description or an item and a key or what? Then what is an item (or the description) and what can it be used for? If I have a description for each key, can I store it alongside the key and use it later after I found its corresponding key? My problem is as follows: I have a text file with 114000 lines. On each line, there is a contract number and a 3 character field (a code) that I must use to determine the template to use. Can I use the dictionary to solve my problem or not? The Add method is generally used in this manner: Dic.Add CStr(Item), Item or Dic.Add sh.Name, CStr(sh.Name) Could I use Dic.Add strContract, strCode If yes, then how do I search and display a specific contract number and its corresponding code? If no, should I use a Dictionary and a dynamic array instead? Thanks -- Jac Tremblay |
#9
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
That is the whole point. You use the contract number to retrieve the
contract code. You don't need the index number. In Bob's example, the sample code: If d.Exists("c") Then MsgBox d.Item("c") End If should return Cairo in the message box. -- Regards, Tom Ogilvy "Jac Tremblay" wrote in message ... Hi again Bob, The reason is that I need the corresponding template code to determine which template to use for a particular contract number. "Bob Phillips" wrote: Hi Jac, Yes I guess so, but why would you need the index, the Dictionary object is not index based. If you want the value, try If d.Exists("c") Then MsgBox d.Item("c") End If -- HTH RP (remove nothere from the email address if mailing direct) "Jac Tremblay" wrote in message ... Hi Bob, Your reply is quite helpful. I had only checked the F1 key and could not get any help on the Scripting.Dictionary; only the Word Dictionary. Next time, I will look in MSDN first. Now that I know I can use the dictionary for my case, I have one more question. When I check if a specific key exists, then do I absolutely have to iterate through the items to find out its index (0 to .count - 1)? Thank you for your comment. "Bob Phillips" wrote: The example in MSDN seems to show it well Dim d ' Create a variable. Set d = CreateObject("Scripting.Dictionary") d.Add "a", "Athens" ' Add some keys and items. d.Add "b", "Belgrade" d.Add "c", "Cairo" Check if it exists If d.Exists("c") Then msg = "Specified key exists." Else msg = "Specified key doesn't exist." End If Use items a = d.Items ' Get the items. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Create return string. Next Use keys a = d.Keys ' Get the keys. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Return results. Next -- HTH RP (remove nothere from the email address if mailing direct) "Jac Tremblay" wrote in message ... I checked many posts about the Scripting.Dictionary and still cannot figure out what the two parameters are, the key and a description or an item and a key or what? Then what is an item (or the description) and what can it be used for? If I have a description for each key, can I store it alongside the key and use it later after I found its corresponding key? My problem is as follows: I have a text file with 114000 lines. On each line, there is a contract number and a 3 character field (a code) that I must use to determine the template to use. Can I use the dictionary to solve my problem or not? The Add method is generally used in this manner: Dic.Add CStr(Item), Item or Dic.Add sh.Name, CStr(sh.Name) Could I use Dic.Add strContract, strCode If yes, then how do I search and display a specific contract number and its corresponding code? If no, should I use a Dictionary and a dynamic array instead? Thanks -- Jac Tremblay |
#10
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Bob,
You are right again. I had not noticed that one could get the item value directly like that. There is no need to make things more complicated than they really are. Thanks to you, and thanks to Tom who opened my eyes. "Bob Phillips" wrote: Hi Jac, Yes I guess so, but why would you need the index, the Dictionary object is not index based. If you want the value, try If d.Exists("c") Then MsgBox d.Item("c") End If -- HTH RP (remove nothere from the email address if mailing direct) "Jac Tremblay" wrote in message ... Hi Bob, Your reply is quite helpful. I had only checked the F1 key and could not get any help on the Scripting.Dictionary; only the Word Dictionary. Next time, I will look in MSDN first. Now that I know I can use the dictionary for my case, I have one more question. When I check if a specific key exists, then do I absolutely have to iterate through the items to find out its index (0 to .count - 1)? Thank you for your comment. "Bob Phillips" wrote: The example in MSDN seems to show it well Dim d ' Create a variable. Set d = CreateObject("Scripting.Dictionary") d.Add "a", "Athens" ' Add some keys and items. d.Add "b", "Belgrade" d.Add "c", "Cairo" Check if it exists If d.Exists("c") Then msg = "Specified key exists." Else msg = "Specified key doesn't exist." End If Use items a = d.Items ' Get the items. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Create return string. Next Use keys a = d.Keys ' Get the keys. For i = 0 To d.Count -1 ' Iterate the array. s = s & a(i) & "<BR" ' Return results. Next -- HTH RP (remove nothere from the email address if mailing direct) "Jac Tremblay" wrote in message ... I checked many posts about the Scripting.Dictionary and still cannot figure out what the two parameters are, the key and a description or an item and a key or what? Then what is an item (or the description) and what can it be used for? If I have a description for each key, can I store it alongside the key and use it later after I found its corresponding key? My problem is as follows: I have a text file with 114000 lines. On each line, there is a contract number and a 3 character field (a code) that I must use to determine the template to use. Can I use the dictionary to solve my problem or not? The Add method is generally used in this manner: Dic.Add CStr(Item), Item or Dic.Add sh.Name, CStr(sh.Name) Could I use Dic.Add strContract, strCode If yes, then how do I search and display a specific contract number and its corresponding code? If no, should I use a Dictionary and a dynamic array instead? Thanks -- Jac Tremblay |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Please post this thread a correct full method, method about | New Users to Excel | |||
Please post this thread a complete correct method, method about te | New Users to Excel | |||
dictionary | Excel Programming | |||
Parameters for Find method | Excel Programming |