Prev: Microsoft Responds to the Evolution of Online Communities
Next: Conditional format - Check for valid values
From: Ryan on 5 May 2010 00:29 I have copied the following code into my Database however I cannot get it to work if the field is of a Date type. I can change the varValue data type from Variant to Date however this then damages all other fields. Any ideas? Function IsSelectedVar( _ strFormName As String, _ strListBoxName As String, _ varValue As Variant) _ As Boolean 'strFormName is the name of the form 'strListBoxName is the name of the listbox 'varValue is the field to check against the listbox Dim lbo As ListBox Dim item As Variant If IsNumeric(varValue) Then varValue = Trim(Str(varValue)) End If Set lbo = Forms(strFormName)(strListBoxName) For Each item In lbo.ItemsSelected If lbo.ItemData(item) = varValue Then IsSelectedVar = True Exit Function End If Next End Function
From: Dorian on 5 May 2010 11:38 "I cannot get it to work if the field is of a Date type." What does this mean? What happens? It sounds like you need to treat date data as a string, you can use CStr() function? -- Dorian "Give someone a fish and they eat for a day; teach someone to fish and they eat for a lifetime". "Ryan" wrote: > I have copied the following code into my Database however I cannot get it to > work if the field is of a Date type. I can change the varValue data type from > Variant to Date however this then damages all other fields. Any ideas? > > Function IsSelectedVar( _ > strFormName As String, _ > strListBoxName As String, _ > varValue As Variant) _ > As Boolean > 'strFormName is the name of the form > 'strListBoxName is the name of the listbox > 'varValue is the field to check against the listbox > Dim lbo As ListBox > Dim item As Variant > If IsNumeric(varValue) Then > varValue = Trim(Str(varValue)) > End If > Set lbo = Forms(strFormName)(strListBoxName) > For Each item In lbo.ItemsSelected > If lbo.ItemData(item) = varValue Then > IsSelectedVar = True > Exit Function > End If > Next > End Function
From: Daryl S on 5 May 2010 12:01
Ryan - What do you mean by 'damages all other fields'? Have you stepped through the code to see what is happening? I don't understand this piece of code - why would you convert a date (which is stored as a number) to a string, and then try to compare it to a date in the list box? I would remove this (comment it out). If IsNumeric(varValue) Then varValue = Trim(Str(varValue)) End If If there could be some dates and some date/times in the comparison, I would change the comparison to be this: If DateValue(lbo.ItemData(item)) = DateValue(varValue) Then You also need your function statement to set varValue As Date. If this doesn't help, let us know what you mean by 'damages other fields'... -- Daryl S "Ryan" wrote: > I have copied the following code into my Database however I cannot get it to > work if the field is of a Date type. I can change the varValue data type from > Variant to Date however this then damages all other fields. Any ideas? > > Function IsSelectedVar( _ > strFormName As String, _ > strListBoxName As String, _ > varValue As Variant) _ > As Boolean > 'strFormName is the name of the form > 'strListBoxName is the name of the listbox > 'varValue is the field to check against the listbox > Dim lbo As ListBox > Dim item As Variant > If IsNumeric(varValue) Then > varValue = Trim(Str(varValue)) > End If > Set lbo = Forms(strFormName)(strListBoxName) > For Each item In lbo.ItemsSelected > If lbo.ItemData(item) = varValue Then > IsSelectedVar = True > Exit Function > End If > Next > End Function |