2

Visual Basic 6.0 を使用して、あるリストボックスに別のリストボックスの項目を入力しようとしています。

2 つのリストボックスをパラメーターとして渡すと、次のサブが正しく機能せず、タイプの不一致が発生する理由を誰でも説明できますか。

Public Sub copyListboxes(Byref lstFrom as Listbox, Byref lstTo as Listbox)
    Dim i as integer
    For i = 0 to lstFrom.Listcount -1
        lstTo.Additem lstFrom.List(i)
    Next i
End Sub

'Call copyListboxes(Listbox1,Listbox2) 'Type Mismatch ... ?

前もって感謝します。

4

1 に答える 1

2

リストボックスの代わりにコンボボックスを使用して、エラーを再現できました。

'1 form with:
'  1 command button: name=Command1
'  2 combobox controls: name=Listbox1 name=Listbox2
Option Explicit

Private Sub Command1_Click()
  Call copyListboxes(Listbox1, Listbox2) 'Type Mismatch!
End Sub

Public Sub copyListboxes(ByRef lstFrom As ListBox, ByRef lstTo As ListBox)
  Dim i As Integer
  For i = 0 To lstFrom.ListCount - 1
      lstTo.AddItem lstFrom.List(i)
  Next i
End Sub

Private Sub Form_Load()
  Dim intIndex As Integer
  For intIndex = 1 To 10
    Listbox1.AddItem CStr(intIndex)
  Next intIndex
End Sub

これを解決するには、Listbox コントロールを使用するか、Combobox コントロールで動作するようにサブを変更します。

Public Sub copyListboxes(ByRef lstFrom As ComboBox, ByRef lstTo As ComboBox)
  Dim i As Integer
  For i = 0 To lstFrom.ListCount - 1
      lstTo.AddItem lstFrom.List(i)
  Next i
End Sub
于 2014-12-18T09:28:25.893 に答える