0

コードが正しく動作しない理由について、アドバイス/ヒント/修正を求めています。

私は2つのフォームを持っています。
Form1にメニューバー(追加タイプのメニューバー)があり、form2のコンボボックスリストをループさせたい(リストに追加できる既存のデータがないかどうかを確認するため)。
私が理解していないのは、なぜform1で動作しないのですか? 1つのフォームを使用して他のプロジェクトでコードをテストしている間、それは機能します。誰かが何が悪いのか教えてもらえますか? なぜ?

2フォーム使用。このコードは新しい型を追加するだけで、コンボ ボックスにデータが存在するかどうかをチェックしません:(

Private Sub mnuAYT_Click()
Dim TypeYacht As String 'Type of yacht added
Dim blnItem As Boolean
Dim intItem As Integer

' - - - - - - - LOOP THROUGHT the combo box all items - - - - - - -

blnItem = False
intItem = 0
Do Until blnItem = True Or intItem = NewCharter.cmbTypeYacht.ListCount
    If TypeYacht = NewCharter.cmbTypeYacht.List(intItem) Then
        blnItem = True
    End If
    intItem = intItem + 1
Loop
    If blnItem = True Then
     MsgBox TypeYacht & " " & "is already exist", vbInformation, "Yacht Type Match"
     NewCharter.cmbTypeYacht.ListIndex = intItem - 1
    Else
    NewCharter.cmbTypeYacht.AddItem NewCharter.cmbTypeYacht.Text
    MsgBox "Successfully added new Yacht Type", vbInformation, "Successfully Added"
    End If
End Sub

ちなみに、これは1つのフォームのみを使用する私のコードです(追加してデータが存在するかどうかを確認してください)

Dim TypeYacht As String 'Type of yacht added
Dim blnItem As Boolean
Dim intItem As Integer

' ----------------------------- LOOP THROUGHT the combo box all items -------------------------

blnItem = False
intItem = 0
TypeYacht = cmbTypeYacht.Text

Do Until blnItem = True Or intItem = cmbTypeYacht.ListCount
    If TypeYacht = cmbTypeYacht.List(intItem) Then
        blnItem = True
    End If
    intItem = intItem + 1
Loop
    If blnItem = True Then
     MsgBox TypeYacht & " " & "is already exist", vbInformation, "Yacht Type Match"
     cmbTypeYacht.ListIndex = intItem - 1
    Else
    cmbTypeYacht.AddItem cmbTypeYacht.Text
    MsgBox "Successfully added new Yacht Type", vbInformation, "Successfully Added"

    End If
4

1 に答える 1

0

NewCharterフォームの有効な開かれたインスタンスへの参照が含まれている必要がありますNewCharter

VB6 では、フォームを明示的に作成しなくても、クラス名でフォームにアクセスできます。これは混乱を招く可能性があります。常にフォームを作成し、参照を明示的に渡す必要があります。

1 つの形式では、 type の変数が必要ですNewCharter。次に、2 番目のフォームを作成し、作成したことを最初のフォームに伝える必要があります。例えば、

Dim another_form As NewCharter
Set another_form = New NewCharacter

次に、既存のコードanother_formの代わりに使用します。NewCharter

于 2013-10-13T07:32:05.733 に答える