• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB6コントロール配列をパラメータとして渡す方法)

VB6コントロール配列をパラメータとして渡す方法

このQ&Aのポイント
  • VB6コントロール配列を次のモジュールに渡す方法を解説します。
  • フォーム上のcmdStartコマンドボタンをクリックすると、使用不可になるプロシージャーを作成する場合、型の違いによるエラーが発生します。
  • コントロールの配列を次のモジュールに渡す方法について詳細に説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.5

Variant型で渡すしかないでしょう。 Private Sub Command1_Click(Index As Integer) EnableControls Command1, False End Sub Public Sub EnableControls(ByRef Ctrls As Variant, ByVal Flag As Boolean) Dim c As Control For Each c In Ctrls c.Enabled = Flag Next End Sub

abcxyz3000
質問者

お礼

これでいけそうな気がします。ありがとうございました。

その他の回答 (4)

回答No.4

これはダメというご指摘を受けるかもしれませんが、 Public Sub processGet(pcmdStart As Variant) Dim i As Integer For i = 0 To 2 pcmdStart(i).Enabled = False Next i End Sub にしたらできました。(できたというだけで、使っていいか自信無しです) (不安ですので、もっと専門の人が回答してくれるといいのですが)

  • diashun
  • ベストアンサー率38% (94/244)
回答No.3

またまた#1です。 先ほどのプロシージャの引数を間違っています。 ×:Index as Control →正:Index as Integer 

  • diashun
  • ベストアンサー率38% (94/244)
回答No.2

#1です。For Next文なら、(bas)を下記に変えても出来ます。 Public Sub processGet(Index As Control) Dim i As Integer For i = 0 To 2 If i = Index Then Form1.cmdStart(i).Enabled = False End If Next 以上。

  • diashun
  • ベストアンサー率38% (94/244)
回答No.1

確認ですが、cmdStartをクリックするとクリックしたボタンだけが、使用不可になればいいのでしょうか? その場合 (Form1) Option Explicit Private Sub cmdStart_Click(Index As Integer) cmdStart(0).Enabled = True cmdStart(1).Enabled = True cmdStart(2).Enabled = True processGet Index End Sub (bas) Option Explicit Public Sub processGet(Index As Integer) Select Case Index Case 0 Form1.cmdStart(0).Enabled = False Form1.cmdStart(1).Enabled = True Form1.cmdStart(2).Enabled = True Case 1 Form1.cmdStart(0).Enabled = True Form1.cmdStart(1).Enabled = False Form1.cmdStart(2).Enabled = True Case 2 Form1.cmdStart(0).Enabled = True Form1.cmdStart(1).Enabled = True Form1.cmdStart(2).Enabled = False End Select End Sub で、いかがですか?

abcxyz3000
質問者

補足

目的はコントロールごとパラメータとして渡すというものだったので。。。

関連するQ&A