• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1380
  • Last Modified:

Need to move selected items from one list box to another. VBA

I have an unbound list box that was populated by an ado recordset, then disconnected. When a row is selected, I would like the user to click an arrow button to apparently move the selected item to another list box. I would like another arrow button that moves the item back to the original list box. The second list box would then show which items have been selected.

I did this 10 years ago in Access, but have forgotten how. Any references would be helpful.

Thanks,
0
Dovberman
Asked:
Dovberman
  • 3
  • 2
1 Solution
 
koutnyCommented:
Assuming both list boxes are unbound and there is only one column
Private Sub cmdSelect_Click()
Dim vSelectedValue As Variant
    vSelectedValue = lstBox1
    If IsNull(vSelectedValue) Or IsEmpty(vSelectedValue) Then
        MsgBox "Select an item first", vbCritical, "No item selected"
        Exit Sub
    End If
    
    lstBox2.AddItem vSelectedValue
    lstBox1.RemoveItem lstBox1.ListIndex
End Sub
 
 
 
Private Sub cmdSelect_Click()
Dim vSelectedValue As Variant
    vSelectedValue = lstBox2
    If IsNull(vSelectedValue) Or IsEmpty(vSelectedValue) Then
        MsgBox "Select an item first", vbCritical, "No item selected"
        Exit Sub
    End If
    
    lstBox1.AddItem vSelectedValue
    lstBox2.RemoveItem lstBox2.ListIndex
End Sub

Open in new window

0
 
koutnyCommented:
Oops, the second procedure should have been cmdDeselect_click. But I am sure you get the drift
0
 
DovbermanAuthor Commented:
Your example refreshed my memory.

I changed the list box row source type to value list.
Add Item for multiple columns was tricky.
The column string value cannot contain embedded commas.
Column headers must be set to no. Otherwise replaced items will go into the header row.

Thanks,
0
 
DovbermanAuthor Commented:
Here is the actual code:

Private Sub cmdSelectViol_Click()
    'Selects a violation from the general list
    'And moves the item to the selected list
   
    Dim intViolationID As Integer
    Dim strViolationDesc As String
    Dim strAuth As String
     
    On Error GoTo cmdSelectViol_Click_Err
   
    If IsNull(lstGenViolations.Column(0)) Or IsEmpty(lstGenViolations.Column(0)) Then
        MsgBox "Select an item first", vbCritical, "No item selected"
        Exit Sub
    End If
   
    intViolationID = lstGenViolations.Column(0)
    strViolationDesc = Replace(lstGenViolations.Column(1), ",", " ") 'Remove embedded commas
    strAuth = lstGenViolations.Column(2)
   
    If IsNull(lstGenViolations.Column(2)) Then
        lstSelectedViol.AddItem Item:=intViolationID & ";" & strViolationDesc
    Else
        lstSelectedViol.AddItem Item:=intViolationID & ";" & strViolationDesc & ";" & strAuth
    End If '!ViolationAuth IsNull
   
    lstGenViolations.RemoveItem lstGenViolations.ListIndex
   
cmdSelectViol_Click_Exit:

    Exit Sub
 
cmdSelectViol_Click_Err:
    LogError Err.Number, Err.Description, "Form: " & Me.Name & ", cmdSelectViol_Click "
    DoCmd.Hourglass False
    Resume cmdSelectViol_Click_Exit

 End Sub
0
 
koutnyCommented:
Yes, I knew I was being lazy when I assumed there was only one column...
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now