1

ここで、lstNameは、Accessフォームのリストボックスの名前です。

Private Sub cmdUp(lstName As String, SQLName As String, IDName As String, ColumnName As String)
  Dim sText As String
  Dim pText As String
  'check: only proceed if there is a selected item
  If lstName.ItemsSelected.Count = 1 Then
  (...)

プロシージャを呼び出した後:

Call cmdUp(lstSchemaName.Name, "eo_ListSchema", "SchemaID", "SchemaName")

この行でエラーが発生します:

If lstName.ItemsSelected.Count = 1 Then

エラーは次のとおりです。

Invalid Qualifier

したがって、基本的にVBAはそのlstNameを理解できません。選択されたアイテムの数を見つけるためのリストです。VBAでは、「文字列はオブジェクトではないため、文字列変数に呼び出すことができるメソッドがない」ことがわかりました。

簡単な解決策があるはずですが、私はそれを見つけることができません。この種の問題にどう対処するか?

どんな助けでも大歓迎です!

エドガラス

4

3 に答える 3

1

リストボックスをリストボックスとして渡すか、文字列にプロパティを持たないか、文字列とフォームオブジェクトを渡すことができます。これはより安全な場合があります。

Call cmdUp(Me, lstSchemaName.Name, "eo_ListSchema", "SchemaID", "SchemaName")

Private Sub cmdUp(frm as Form, lstName As String, _
     SQLName As String, IDName As String, ColumnName As String)

   Frm(lstName) ...
于 2012-09-05T11:22:51.053 に答える
1

lstName渡したとおり、実際のリストボックスインスタンスではなく、リストボックスの文字列名になります。

これlstNameは文字列であるため、呼び出しlstName.ItemsSelectedは無効です。

代わりにリストボックスを渡すことができるはずです:

Private Sub cmdUp(lstBox As ListBox, SQLName As String, IDName As String, ColumnName As String)
...

次に、次を使用してこれを呼び出します。

Call cmdUp(lstSchemaName, "eo_ListSchema", "SchemaID", "SchemaName")
于 2012-09-05T11:23:45.703 に答える
1

cmdUpプロシージャ内でLsitboxとしてListBoxを渡す必要があります

Private Sub cmdUp(lstName As ListBox, SQLName As String, IDName As String, ColumnName As String)

または、次のような名前を使用して適切なコントロールを見つけます。

Dim myListBox As ListBox = Me.FindControl(lstName)
if myListBox.ItemSelected.Count = 1 Then
...
于 2012-09-05T11:28:31.350 に答える