Option Explicit Dim intColIdx As Integer 'This will contain the index for the current cell in the dbgrid Dim blnListShow As Boolean 'is the list showing or not Private Sub DBGrid1_ButtonClick(ByVal ColIndex As Integer) Dim intTop As Integer intColIdx = ColIndex If blnListShow = False Then 'if the list is not showing then... blnListShow = True List1.Left = DBGrid1.Columns(ColIndex).Left + 360 intTop = DBGrid1.Top + (DBGrid1.RowHeight * (DBGrid1.Row +2)) List1.Top = intTop List1.Width = DBGrid1.Columns(ColIndex).Width + 15 List1.Visible = True List1.SetFocus Else 'if the list is show, hide it blnListShow = False List1.Visible = False End If End Sub Private Sub Form_Load() blnListShow = False 'initialize End Sub Private Sub List1_Click() DBGrid1.Columns(intColIdx).Text = List1.Text 'set the value of the dbgrid List1.Visible = False 'hide the list End Sub Private Sub List1_LostFocus() blnListShow = False List1.Visible = False End Sub