PC Review


Reply
Thread Tools Rate Thread

Combo box with Data Validation feature

 
 
=?Utf-8?B?TWVsaXNzYURlTWlsbGU=?=
Guest
Posts: n/a
 
      19th Apr 2007
OK, as I suspected, I have another question. I have linked the combo box
using the data valadation feature, and input my information for an error
message when a value that is not in the list is entered.

I do not get those error messages, and am allowed to enter information that
is not in the list. I have tested it using just the list, the problem is that
I would prefer to
have the autocomlete feature that you get with the combo box. Any help would
be appreciated.

Thanks again.

here is the coding I am currently using:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
Dim wsList As Worksheet
Set ws = ActiveSheet
Set wsList = Sheets("2007 Manpower")

Cancel = True
Set cboTemp = ws.OLEObjects("EmpName")
On Error Resume Next
With cboTemp
'clear and hide the combo box
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
End With
On Error GoTo errHandler
If Target.Validation.Type = 3 Then
'if the cell contains a data validation list
Application.EnableEvents = False
'get the data validation formula
str = Target.Validation.Formula1
str = Right(str, Len(str) - 1)
With cboTemp
'show the combobox with the list
.Visible = True
.Left = Target.Left
.Top = Target.Top
.Width = Target.Width + 5
.Height = Target.Height + 5
.ListFillRange = str
.LinkedCell = Target.Address
End With
cboTemp.Activate
End If

errHandler:
Application.EnableEvents = True
Exit Sub

End Sub
'=========================================
'Optional code to move to next cell if Tab or Enter are pressed
'from code by Ted Lanham
Private Sub TempCombo_KeyDown(ByVal _
KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
Select Case KeyCode
Case 9 'Tab
ActiveCell.Offset(0, 1).Activate
Case 13 'Enter
ActiveCell.Offset(1, 0).Activate
Case Else
'do nothing
End Select
End Sub
'====================================



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
' added line
If Application.CutCopyMode <> False Then Exit Sub
Set ws = ActiveSheet
Application.EnableEvents = False
Application.ScreenUpdating = True

Set cboTemp = ws.OLEObjects("EmpName")
On Error Resume Next
With cboTemp
.Top = 10
.Left = 10
.Width = 0
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
.Value = ""
End With

errHandler:
Application.EnableEvents = True
Exit Sub

End Sub '====================================


 
Reply With Quote
 
 
 
 
Debra Dalgleish
Guest
Posts: n/a
 
      20th Apr 2007
You can add code to test the cell after the combo box loses focus:

'==========================
Private Sub TempCombo_LostFocus()
Dim str As String
Dim wsList As Worksheet
Dim rngLinked As Range
Dim rngList As Range
Set wsList = Sheets("ValidationLists")
Application.EnableEvents = False
Set rngLinked = Range(TempCombo.LinkedCell)
Set rngList = wsList.Range(TempCombo.ListFillRange)
If Application.WorksheetFunction.CountIf(rngList, rngLinked.Value) = 0 Then
MsgBox "Not a valid entry"
'Application.Undo
TempCombo.Value = ""
rngLinked.Value = ""
End If
rngLinked.Activate
If TempCombo.Visible = True Then
With TempCombo
.Top = 10
.Left = 10
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
.Value = ""
End With
End If
Application.EnableEvents = True
End Sub
'=======================

MelissaDeMille wrote:
> OK, as I suspected, I have another question. I have linked the combo box
> using the data valadation feature, and input my information for an error
> message when a value that is not in the list is entered.
>
> I do not get those error messages, and am allowed to enter information that
> is not in the list. I have tested it using just the list, the problem is that
> I would prefer to
> have the autocomlete feature that you get with the combo box. Any help would
> be appreciated.
>
> Thanks again.
>
> here is the coding I am currently using:
>
> Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
> Cancel As Boolean)
> Dim str As String
> Dim cboTemp As OLEObject
> Dim ws As Worksheet
> Dim wsList As Worksheet
> Set ws = ActiveSheet
> Set wsList = Sheets("2007 Manpower")
>
> Cancel = True
> Set cboTemp = ws.OLEObjects("EmpName")
> On Error Resume Next
> With cboTemp
> 'clear and hide the combo box
> .ListFillRange = ""
> .LinkedCell = ""
> .Visible = False
> End With
> On Error GoTo errHandler
> If Target.Validation.Type = 3 Then
> 'if the cell contains a data validation list
> Application.EnableEvents = False
> 'get the data validation formula
> str = Target.Validation.Formula1
> str = Right(str, Len(str) - 1)
> With cboTemp
> 'show the combobox with the list
> .Visible = True
> .Left = Target.Left
> .Top = Target.Top
> .Width = Target.Width + 5
> .Height = Target.Height + 5
> .ListFillRange = str
> .LinkedCell = Target.Address
> End With
> cboTemp.Activate
> End If
>
> errHandler:
> Application.EnableEvents = True
> Exit Sub
>
> End Sub
> '=========================================
> 'Optional code to move to next cell if Tab or Enter are pressed
> 'from code by Ted Lanham
> Private Sub TempCombo_KeyDown(ByVal _
> KeyCode As MSForms.ReturnInteger, _
> ByVal Shift As Integer)
> Select Case KeyCode
> Case 9 'Tab
> ActiveCell.Offset(0, 1).Activate
> Case 13 'Enter
> ActiveCell.Offset(1, 0).Activate
> Case Else
> 'do nothing
> End Select
> End Sub
> '====================================
>
>
>
> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> Dim str As String
> Dim cboTemp As OLEObject
> Dim ws As Worksheet
> ' added line
> If Application.CutCopyMode <> False Then Exit Sub
> Set ws = ActiveSheet
> Application.EnableEvents = False
> Application.ScreenUpdating = True
>
> Set cboTemp = ws.OLEObjects("EmpName")
> On Error Resume Next
> With cboTemp
> .Top = 10
> .Left = 10
> .Width = 0
> .ListFillRange = ""
> .LinkedCell = ""
> .Visible = False
> .Value = ""
> End With
>
> errHandler:
> Application.EnableEvents = True
> Exit Sub
>
> End Sub '====================================
>
>



--
Debra Dalgleish
Contextures
http://www.contextures.com/tiptech.html

 
Reply With Quote
 
=?Utf-8?B?TWVsaXNzYURlTWlsbGU=?=
Guest
Posts: n/a
 
      20th Apr 2007
Sadly, that did not correct the problem. Any other ideas?

"Debra Dalgleish" wrote:

> You can add code to test the cell after the combo box loses focus:
>
> '==========================
> Private Sub TempCombo_LostFocus()
> Dim str As String
> Dim wsList As Worksheet
> Dim rngLinked As Range
> Dim rngList As Range
> Set wsList = Sheets("ValidationLists")
> Application.EnableEvents = False
> Set rngLinked = Range(TempCombo.LinkedCell)
> Set rngList = wsList.Range(TempCombo.ListFillRange)
> If Application.WorksheetFunction.CountIf(rngList, rngLinked.Value) = 0 Then
> MsgBox "Not a valid entry"
> 'Application.Undo
> TempCombo.Value = ""
> rngLinked.Value = ""
> End If
> rngLinked.Activate
> If TempCombo.Visible = True Then
> With TempCombo
> .Top = 10
> .Left = 10
> .ListFillRange = ""
> .LinkedCell = ""
> .Visible = False
> .Value = ""
> End With
> End If
> Application.EnableEvents = True
> End Sub
> '=======================
>
> MelissaDeMille wrote:
> > OK, as I suspected, I have another question. I have linked the combo box
> > using the data valadation feature, and input my information for an error
> > message when a value that is not in the list is entered.
> >
> > I do not get those error messages, and am allowed to enter information that
> > is not in the list. I have tested it using just the list, the problem is that
> > I would prefer to
> > have the autocomlete feature that you get with the combo box. Any help would
> > be appreciated.
> >
> > Thanks again.
> >
> > here is the coding I am currently using:
> >
> > Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
> > Cancel As Boolean)
> > Dim str As String
> > Dim cboTemp As OLEObject
> > Dim ws As Worksheet
> > Dim wsList As Worksheet
> > Set ws = ActiveSheet
> > Set wsList = Sheets("2007 Manpower")
> >
> > Cancel = True
> > Set cboTemp = ws.OLEObjects("EmpName")
> > On Error Resume Next
> > With cboTemp
> > 'clear and hide the combo box
> > .ListFillRange = ""
> > .LinkedCell = ""
> > .Visible = False
> > End With
> > On Error GoTo errHandler
> > If Target.Validation.Type = 3 Then
> > 'if the cell contains a data validation list
> > Application.EnableEvents = False
> > 'get the data validation formula
> > str = Target.Validation.Formula1
> > str = Right(str, Len(str) - 1)
> > With cboTemp
> > 'show the combobox with the list
> > .Visible = True
> > .Left = Target.Left
> > .Top = Target.Top
> > .Width = Target.Width + 5
> > .Height = Target.Height + 5
> > .ListFillRange = str
> > .LinkedCell = Target.Address
> > End With
> > cboTemp.Activate
> > End If
> >
> > errHandler:
> > Application.EnableEvents = True
> > Exit Sub
> >
> > End Sub
> > '=========================================
> > 'Optional code to move to next cell if Tab or Enter are pressed
> > 'from code by Ted Lanham
> > Private Sub TempCombo_KeyDown(ByVal _
> > KeyCode As MSForms.ReturnInteger, _
> > ByVal Shift As Integer)
> > Select Case KeyCode
> > Case 9 'Tab
> > ActiveCell.Offset(0, 1).Activate
> > Case 13 'Enter
> > ActiveCell.Offset(1, 0).Activate
> > Case Else
> > 'do nothing
> > End Select
> > End Sub
> > '====================================
> >
> >
> >
> > Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> > Dim str As String
> > Dim cboTemp As OLEObject
> > Dim ws As Worksheet
> > ' added line
> > If Application.CutCopyMode <> False Then Exit Sub
> > Set ws = ActiveSheet
> > Application.EnableEvents = False
> > Application.ScreenUpdating = True
> >
> > Set cboTemp = ws.OLEObjects("EmpName")
> > On Error Resume Next
> > With cboTemp
> > .Top = 10
> > .Left = 10
> > .Width = 0
> > .ListFillRange = ""
> > .LinkedCell = ""
> > .Visible = False
> > .Value = ""
> > End With
> >
> > errHandler:
> > Application.EnableEvents = True
> > Exit Sub
> >
> > End Sub '====================================
> >
> >

>
>
> --
> Debra Dalgleish
> Contextures
> http://www.contextures.com/tiptech.html
>
>

 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
data validation and combo box macataq Microsoft Excel Misc 4 28th Sep 2008 06:03 PM
Data validation - combo box susan Microsoft Excel Worksheet Functions 4 23rd May 2008 11:44 PM
Data validation with validation lists and combo boxs =?Utf-8?B?S2VpdGg=?= Microsoft Excel Misc 1 12th Oct 2006 11:08 AM
Data Validation without using List feature Connie Microsoft Excel Programming 8 9th Oct 2006 05:40 AM
Combo Box or Data Validation =?Utf-8?B?RkE=?= Microsoft Excel Misc 17 27th Sep 2005 01:58 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 04:44 PM.